2.6. OpenSSL でプライベート CA を使用して CSR の証明書を発行する
TLS 暗号化されたデータ交換チャネルを確立するには、システムは認証局 (CA) から有効な証明書を取得する必要があります。プライベート CA をお持ちの場合は、証明書署名要求 (CSR) に署名することで、要求された証明書を作成できます。
前提条件
- プライベート CA が設定済みである。詳細は、OpenSSL を使用したプライベート CA の作成 セクションを参照してください。
- CSR を含むファイルがある。CSR の作成例については、「OpenSSL を使用した TLS サーバー証明書の秘密鍵と CSR の作成」 セクションを参照してください。
手順
オプション: テキストエディターを使用して、証明書に拡張機能を追加するための OpenSSL 設定ファイルを準備します。以下に例を示します。
$ vim <openssl.cnf> [server-cert] extendedKeyUsage = serverAuth [client-cert] extendedKeyUsage = clientAuth前述の例は原理を示しているに過ぎません。
opensslユーティリティーは、証明書にすべての拡張機能を自動的に追加するわけではありません。必要な拡張を CNF ファイルに追加するか、opensslコマンドのパラメーターに追加する必要があります。x509ユーティリティーを使用して、CSR に基づいて証明書を作成します。次に例を示します。$ openssl x509 -req -in <server_cert.csr> -CA <ca.crt> -CAkey <ca.key> -days 365 -extfile <openssl.cnf> -extensions <server_cert> -out <server_cert.crt> Signature ok subject=C = US, O = Example Organization, CN = server.example.com Getting CA Private Keyセキュリティーを強化するには、CSR から別の証明書を作成する前に、シリアル番号ファイルを削除してください。こうすることで、シリアル番号が常に無作為になるようにします。カスタムファイル名を指定する
CAserialオプションを省略した場合、シリアル番号のファイル名は証明書のファイル名と同じですが、その拡張子は.srl拡張子に置き換えられます (前の例ではserver-cert.srl)。
検証
証明書の内容とフィールドを確認します。
$ openssl x509 -in <server_cert.crt> -text -noout Certificate: Data: Version: 3 (0x2) Serial Number: ... Issuer: C = US, O = Example CA, CN = Example CA Validity Not Before: May 21 10:30:00 2026 GMT Not After : May 21 10:30:00 2027 GMT Subject: C = US, O = Example Organization, CN = server.example.com ...証明書が正しい認証局によって署名されていることを確認します。
$ openssl verify -CAfile <ca.crt> <server_cert.crt> <server_cert.crt>: OK証明書の有効期限を確認します。
$ openssl x509 -in <server_cert.crt> -noout -dates notBefore=May 21 10:30:00 2026 GMT notAfter=May 21 10:30:00 2027 GMT