SSL/TLS証明書
SSL/TLS証明書は以下の2つの方法で取得できます。
- 自己署名証明書:自身で発行する証明書を使用することを指します。ただし、自己署名証明書は多くのセキュリティリスクがあり、テストや検証環境での利用のみ推奨されます。
- 証明書の申請または購入:無料証明書はLet's EncryptやHuawei Cloud、Tencent Cloudなどのクラウドベンダーから申請できます。また、有料証明書はDigiCertなどの組織から購入可能です。企業ユーザーの場合、より高いセキュリティ保護を得るために、有料のOV以上の証明書の申請を一般的に推奨します。
本ページでは、自己署名の認証局(CA)証明書を作成し、サーバーおよびクライアント証明書を発行する方法を紹介します。
セルフサインCA証明書の作成
前提条件
OpenSSLがインストールされていること。
以下のコマンドを実行して鍵ペアを生成します。コマンド実行時に鍵を保護するためのパスワードの入力を求められます。このパスワードは証明書の生成、発行、検証時に必要となるため、鍵とパスワードは安全に保管してください。
bashopenssl genrsa -des3 -out rootCA.key 2048次に、鍵ペアの秘密鍵を使ってCA証明書を生成します。コマンド実行時に証明書の識別名(Distinguished Name, DN)を設定するよう求められます。
bashopenssl req -x509 -new -nodes -key rootCA.key -sha256 -days 3650 -out rootCA.crt
サーバー証明書の発行
先ほど作成したCA証明書を使って、サーバー証明書を発行します。サーバー証明書はサーバー所有者の身元を検証するために使用され、通常はホスト名、サーバー名、またはドメイン名(例:www.emqx.com)に発行されます。サーバー証明書の生成には、CA鍵(rootCA.key)、CA証明書(rootCA.crt)、およびサーバーの証明書署名要求(CSR)(server.csr)が必要です。
サーバー証明書用の鍵ペアを生成します。
bashopenssl genrsa -out server.key 2048サーバー鍵ペアを使ってCSRを作成します。CSRはCAのルート証明書の秘密鍵で署名されることで、証明書の公開鍵ファイルが生成されユーザーに発行されます。コマンド実行時に証明書の識別名(DN)を設定するよう求められます。
bashopenssl req -new -key server.key -out server.csr以下の情報入力を求められます。各項目の意味は以下の通りです。
bashYou are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]: # 国/地域 State or Province Name (full name) [Some-State]: # 州/県名 Locality Name (eg, city) []: # 市区町村名 Organization Name (eg, company) [Internet Widgets Pty Ltd]: # 組織名(会社名)、例:EMQ Organizational Unit Name (eg, section) []: # 部署名、例:EMQX Common Name (e.g. server FQDN or YOUR name) []: # サーバーの完全修飾ドメイン名(FQDN)、例:mqtt.emqx.com ...サーバーCSRを使ってサーバー証明書を生成し、有効期限を指定します。ここでは365日に設定しています。
bashopenssl x509 -req -in server.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out server.crt -days 365これで証明書一式が生成されます。
bash. ├── rootCA.crt ├── rootCA.key ├── rootCA.srl ├── server.crt ├── server.csr └── server.key
クライアント証明書の発行
クライアント証明書の発行手順はサーバー証明書の発行とほぼ同様です。唯一の違いはCSR作成時に、Common Nameをクライアントのユーザー名やクライアントIDなどの一意の識別子に設定する点です。
クライアント証明書はサーバー証明書と同じCA証明書で署名されるため、上記のCA証明書でクライアント証明書も署名可能です。
次のステップ
SSL/TLS証明書を取得したら、クライアントのSSL/TLS接続を有効化できます。