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 Widgits 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接続を有効化できます。また、証明書の有効期限が切れた際には更新も可能です。