サーバー証明書は、クライアントがサーバーを認証するために使用されます。サーバー証明書を購入または発行し、Alibaba Cloud 証明書管理サービスでホストする必要があります。このトピックでは、サーバー証明書の生成方法と使用方法について説明します。
サーバー証明書のワークフロー
制限事項
Platinum Edition および Professional Edition のインスタンスのみが、サーバー証明書管理機能をサポートします。
前提条件
CA 証明書を取得済みです。
OpenSSL v1.1.1i 以降がインストールされています。
ステップ 1: CA 証明書を使用したサーバー証明書の発行
信頼できる認証局 (CA) からサーバー証明書を購入するか、独自の CA 証明書を使用してサーバー証明書を発行できます。CA 証明書の取得に関する詳細については、「自己署名 CA 証明書」をご参照ください。
RSA アルゴリズム証明書
OpenSSL のインストールパスに設定ファイルを作成します。
次の内容で
server.csr.cfgという名前のファイルを作成します:説明必要に応じて
[dn]セクションを設定します。[req] default_bits = 2048 prompt = no default_md = sha256 distinguished_name = dn [dn] C=CN ST=ZJ L=HZ O=ALI OU=MQTT emailAddress=xxx@xxx CN=mqtt-test.xxx.aliyuncs.com次の内容で server.crt.cfg という名前のファイルを作成します。
説明[alt_names]にカスタムドメイン名を入力できます。カスタムドメイン名を使用する場合、カスタムドメイン名を ApsaraMQ for MQTT サービスによって提供されるドメイン名に対応付ける CNAME レコードを作成する必要があります。カスタムドメイン名を使用しない場合は、
[alt_names]を ApsaraMQ for MQTT が提供するドメイン名に設定します。 例:DNS.2=mqtt-test.cn-qingdao.aliyuncs.com。複数のリージョンにある異なるインスタンスで同じサーバー証明書を使用するには、ドメイン名にワイルドカード文字を使用できます。例:
DNS.1=*.mqtt.aliyuncs.com。
authorityKeyIdentifier=keyid,issuer basicConstraints=CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment, keyCertSign extendedKeyUsage = serverAuth, clientAuth subjectAltName = @alt_names [alt_names] DNS.1=*.mqtt.aliyuncs.com DNS.2=mqtt-test.cn-qingdao.aliyuncs.com
次のコマンドを実行して、サーバー証明書の秘密鍵と証明書署名リクエスト (CSR) ファイルを生成します。
Mac:
openssl req -new -sha256 -nodes -out server.csr -newkey rsa:2048 -keyout server.key -config <(cat server.csr.cfg)Windows:
openssl req -new -sha256 -nodes -out server.csr -newkey rsa:2048 -keyout server.key -config server.csr.cfg
次のコマンドを実行して、サーバー証明書の秘密鍵を PKCS#8 フォーマットに変換します。
openssl pkcs8 -topk8 -nocrypt -in server.key -out server_pkcs8.key変換されたプライベートキーは
server_pkcs8.keyです。cat server_pkcs8.keyコマンドを実行して表示できます。以下に例を示します。重要「ステップ 2: サーバー証明書のホスト」の操作を実行する際は、このステップで生成されたサーバーの秘密鍵をアップロードする必要があります。
-----BEGIN PRIVATE KEY----- MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBALaDOET1McZD0hV/ ma1YlSZjim00rVwrdXefqOHXWEqm8/HxZ3iWmKN/jGWW1aAoYFRAg0CNar1eDap4 ***** ***** ***** PLX2WlXAXggKZvpozkig/J6klAN8pVvwM4BPgJDLk+hllM8MowOxlNjoHsI34lAQ g17SUS1ERIK+ -----END PRIVATE KEY-----次のコマンドを実行して、サーバー証明書を生成します。
openssl x509 -req -in server.csr -CA CA.crt -CAkey CA.key -CAcreateserial -out server.crt -days 500 -sha256 -extfile server.crt.cfg生成されたサーバー証明書は
server.crtとなります。次のコマンドを実行して、サーバー証明書チェーンを生成します。
server_chain.crtという名前の空の証明書チェーンファイルを作成します。touch server_chain.crtサーバー証明書の内容を証明書チェーンファイルにコピーします。
cat server.crt >> server_chain.crtCA 証明書の内容をコピーし、証明書チェーンファイル内のサーバー証明書の内容の後に追加します。
cat CA.crt >> server_chain.crt
cat server_chain.crtコマンドを実行すると、サーバー証明書チェーンを表示できます。証明書チェーンの内容は、次の形式で表示されます。重要「ステップ 2: サーバー証明書のホスト」の操作を実行する際は、このステップで生成されたサーバー証明書チェーンをアップロードする必要があります。
-----BEGIN CERTIFICATE----- xxx サーバー証明書の内容 xxx -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- xxx CA 証明書の内容 xxx -----END CERTIFICATE-----
ECC アルゴリズム証明書
OpenSSL のインストールパスに設定ファイルを作成します。
次の内容で
server.csr.cfgという名前のファイルを作成します:説明必要に応じて
[dn]セクションに入力します。[req] prompt = no default_md = sha256 distinguished_name = dn [dn] C=CN ST=ZJ L=HZ O=ALI OU=MQTT emailAddress=xxx@xxx CN=mqtt-test.xxx.aliyuncs.com次の内容でserver.crt.cfgという名前のファイルを作成します。
説明[alt_names]にカスタムドメイン名を入力できます。 カスタムドメイン名を使用する場合は、CNAME レコードを作成して、そのカスタムドメイン名を ApsaraMQ for MQTT サービスが提供するドメイン名にマップする必要があります。カスタムドメイン名を使用しない場合は、
[alt_names]を ApsaraMQ for MQTT が提供するドメイン名に設定します。例:DNS.2=mqtt-test.cn-qingdao.aliyuncs.com。複数のリージョンにある異なるインスタンスで同じサーバー証明書を使用するには、ドメイン名にワイルドカード文字を使用できます。例:
DNS.1=*.mqtt.aliyuncs.com。
authorityKeyIdentifier=keyid,issuer basicConstraints=CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment, keyCertSign extendedKeyUsage = serverAuth, clientAuth subjectAltName = @alt_names [alt_names] DNS.1=*.mqtt.aliyuncs.com DNS.2=mqtt-test.cn-qingdao.aliyuncs.com
サーバー証明書の秘密鍵 (
server.key) の生成openssl ecparam -out server.key -name prime256v1 -genkeyサーバー証明書の
server.csrファイルの生成Mac:
openssl req -new -sha256 -nodes -out server.csr -key server.key -config <(cat server.csr.cfg)Windows:
openssl req -new -sha256 -nodes -out server.csr -key server.key -config server.csr.cfg
CA 証明書からのサーバー証明書の発行
openssl x509 -req -in server.csr -CA CA.crt -CAkey CA.key -CAcreateserial -out server.crt -days 500 -sha256 -extfile server.crt.cfg次のコマンドを実行して、サーバー証明書の秘密鍵を PKCS#8 形式に変換します。変換後の秘密鍵の名前は
server_pkcs8.keyです。openssl pkcs8 -topk8 -nocrypt -in server.key -out server_pkcs8.key重要「ステップ 2: サーバー証明書のホスト」の操作を実行する際は、このステップで生成されたサーバーの秘密鍵をアップロードする必要があります。
次のコマンドを実行して、サーバー証明書チェーンを生成します。
server_chain.crtという名前の空の証明書チェーンファイルを作成します。touch server_chain.crtサーバー証明書の内容を証明書チェーンファイルにコピーします。
cat server.crt >> server_chain.crtCA 証明書の内容をコピーし、証明書チェーンファイル内のサーバー証明書の内容の後に追加します。
cat CA.crt >> server_chain.crt
重要「ステップ 2: サーバー証明書のホスト」の操作を実行する際は、このステップで生成されたサーバー証明書チェーンをアップロードする必要があります。
ステップ 2: サーバー証明書のホスト
発行されたサーバー証明書を [Alibaba Cloud 証明書管理サービスコンソール] で保管します。証明書を保管すると、[ApsaraMQ for MQTT コンソール] で証明書を表示して有効化できます。
サーバー証明書は、RSA および ECC アルゴリズムをサポートしています。
カスタムドメイン名を使用するには、証明書にドメイン名を追加し、ApsaraMQ for MQTT インスタンスのエンドポイントを指す CNAME レコードを作成できます。
ApsaraMQ for MQTT コンソール にログインします。左側のナビゲーションウィンドウで、インスタンスリスト をクリックします。
上部のナビゲーションバーで、管理するインスタンスが存在するリージョンを選択します。[インスタンス] ページで、インスタンス名をクリックして インスタンスの詳細 ページに移動します。
左側メニューで、 を選択します。次に、ページの左上隅にある 証明書の作成 をクリックします。
自動的に Alibaba Cloud 証明書管理サービスコンソール の [SSL 証明書管理] ページにリダイレクトされます。
[SSL 証明書管理] ページで、[証明書のアップロード] をクリックします。 表示される [証明書のアップロード] パネルで、パラメーターを指定して [OK] をクリックします。
[Certificate Standard]: [International Standard] を選択します。
[証明書ファイル]: ステップ 1: CA 証明書を使用してサーバー証明書を発行するで生成したサーバー証明書チェーンファイル
server_chain.crtをアップロードするか、証明書チェーンの内容をテキストボックスに貼り付けます。[証明書の秘密鍵]:ステップ 1: CA 証明書を使用してサーバー証明書を発行するで生成した変換済みの秘密鍵ファイル
server_pkcs8.keyをアップロードするか、秘密鍵の内容をテキストボックスに貼り付けます。[Certificate Chain]: このパラメーターには、証明書チェーンファイルをアップロードしたり、証明書チェーンの内容を入力したりしないでください。そうしないと、証明書の認証が失敗します。
ステップ 3: サーバー証明書を使用したサービスの起動
サーバー証明書を使用してサービスを起動すると、起動中にクライアントが切断されます。注意して実行してください。
不正な証明書を使用すると、サービスが一時的に利用できなくなります。
ApsaraMQ for MQTT コンソール にログインします。左側のナビゲーションウィンドウで、インスタンスリスト をクリックします。
上部のナビゲーションバーで、管理するインスタンスが存在するリージョンを選択します。[インスタンス] ページで、インスタンス名をクリックして インスタンスの詳細 ページに移動します。
左側メニューで、 を選択します。
相互認証 をクリックします。表示されるダイアログボックスで、サーバー証明書を選択します。次に、Actions 列で サービスの開始 をクリックします。
サービスを開始すると、ApsaraMQ for MQTT インスタンスが再起動します。 再起動には約 5~10 分かかります。 再起動後、クライアントはサーバー証明書をサーバー側の認証に使用できます。
サービスが起動すると、ポート 8883 で相互認証が有効になり、一方向認証は無効になります。
表示されたダイアログボックスで、メッセージをよくお読みいただき、OK をクリックします。
一方向認証に戻す場合は、単方向認証 をクリックします。表示されるダイアログボックスで、OK をクリックし、サーバーが再起動するのを待ちます。