Server Certificate
Intermediate CA で署名した TLSサーバー証明書 を作成し、 証明書チェーン を検証する。
Root CA └─ Intermediate CA └─ Server Certificate| 項目 | 内容 |
|---|---|
| OS | Debian 13.x |
| OpenSSL | 3.5 |
| 作業ディレクトリ | pki/server |
| Intermediate CA証明書 | ../intermediate/intermediate.crt |
| Intermediate CA秘密鍵 | ../intermediate/intermediate.key |
| Root CA証明書 | ../root/ca.crt |
| 証明書拡張ファイル | ../extensions.cnf |
| ドメイン名 | www.example.com |
| IPアドレス | 192.168.1.1 |
1. 秘密鍵の作成
Section titled “1. 秘密鍵の作成”サーバー証明書の発行作業に使用する、パスフレーズ付きの 秘密鍵 を作成する。
openssl genpkey \ -algorithm RSA \ -aes-256-cbc \ -pkeyopt rsa_keygen_bits:2048 \ -out server.keychmod 600 server.key使用するコマンド
Section titled “使用するコマンド”主なオプション
Section titled “主なオプション”| オプション | 役割 |
|---|---|
| -algorithm RSA | RSA鍵を生成する |
| -aes-256-cbc | 秘密鍵をパスフレーズで暗号化する |
| -pkeyopt rsa_keygen_bits:2048 | 鍵長を2048ビットにする |
| -out server.key | 秘密鍵を server.key へ保存する |
openssl pkey -in server.key -check -noout期待する結果:
Key is valid
2. CSRの作成
Section titled “2. CSRの作成”サーバー証明書の発行をIntermediate CAへ要求するための CSR を作成する。
openssl req -new \ -key server.key \ -out server.csr使用するコマンド
Section titled “使用するコマンド”主なオプション
Section titled “主なオプション”| オプション | 役割 |
|---|---|
| -new | 新しいCSRを作成する |
| -key server.key | CSRへ含める公開鍵と署名に使う秘密鍵を指定する |
| -out server.csr | CSRを server.csr へ保存する |
3. サーバー証明書の作成
Section titled “3. サーバー証明書の作成”CSRへIntermediate CAの秘密鍵で署名し、サーバー証明書を作成する。
openssl x509 -req \ -in server.csr \ -CA ../intermediate/intermediate.crt \ -CAkey ../intermediate/intermediate.key \ -days 365 -sha256 \ -out server.crt \ -extfile ../extensions.cnf \ -extensions server_cert使用するコマンド
Section titled “使用するコマンド”主なオプション
Section titled “主なオプション”| オプション | 役割 |
|---|---|
| -req | 入力ファイルをCSRとして読み込む |
| -in server.csr | 署名するCSRを指定する |
| -CA ../intermediate/intermediate.crt | 署名に使うIntermediate CA証明書を指定する |
| -CAkey ../intermediate/intermediate.key | 署名に使うIntermediate CA秘密鍵を指定する |
| -days 365 | 証明書の有効期間を365日にする |
| -sha256 | SHA-256 を使って証明書へ署名する |
| -out server.crt | 証明書を server.crt へ保存する |
| -extfile ../extensions.cnf | 拡張を記述した設定ファイルを読み込む |
| -extensions server_cert | [ server_cert ] セクションを適用する |
4. nginx用の証明書チェーンと秘密鍵を作成する
Section titled “4. nginx用の証明書チェーンと秘密鍵を作成する”nginxの ssl_certificate には、サーバー証明書を先頭、その後ろにIntermediate CA証明書を連結したファイルを指定する。Root CA証明書は通常サーバーから配布せず、クライアントのTrust Storeへ登録する。
cat server.crt ../intermediate/intermediate.crt > fullchain.pemnginxの自動起動用に、発行用の server.key からパスフレーズを取り除いた配備用秘密鍵を作る。実行時に server.key のパスフレーズを入力する。
openssl pkey \ -in server.key \ -out privkey.pemchmod 600 privkey.pem作成後の成果物は次のとおり。
| ファイル | 内容 | 配備先 |
|---|---|---|
../root/ca.crt |
Root CA証明書 | 接続するクライアントのTrust Store |
../intermediate/intermediate.crt |
Intermediate CA証明書 | fullchain.pem の2番目 |
server.crt |
サーバー証明書 | fullchain.pem の先頭 |
server.key |
パスフレーズ付き発行用秘密鍵 | PKI作業ディレクトリで保管 |
fullchain.pem |
サーバー証明書+Intermediate CA証明書 | nginxの ssl_certificate |
privkey.pem |
パスフレーズなしの配備用秘密鍵 | nginxの ssl_certificate_key |
nginxへ配備する場合は、サイト名に合わせたディレクトリへコピーする。
sudo install -d -o root -g root -m 700 \ /etc/nginx/tls/www.example.comsudo install -o root -g root -m 644 fullchain.pem \ /etc/nginx/tls/www.example.com/fullchain.pemsudo install -o root -g root -m 600 privkey.pem \ /etc/nginx/tls/www.example.com/privkey.pem証明書チェーン
Section titled “証明書チェーン”openssl verify \ -CAfile ../root/ca.crt \ -untrusted ../intermediate/intermediate.crt \ -purpose sslserver \ server.crt期待する結果:
server.crt: OK
openssl verify \ -CAfile ../root/ca.crt \ -untrusted ../intermediate/intermediate.crt \ -purpose sslserver \ -verify_hostname www.example.com \ server.crt期待する結果:
server.crt: OK
IPアドレス
Section titled “IPアドレス”openssl verify \ -CAfile ../root/ca.crt \ -untrusted ../intermediate/intermediate.crt \ -purpose sslserver \ -verify_ip 192.168.1.1 \ server.crt期待する結果:
server.crt: OK
使用するコマンド
Section titled “使用するコマンド”主なオプション
Section titled “主なオプション”| オプション | 役割 |
|---|---|
| -CAfile ../root/ca.crt | 信頼するRoot CA証明書を指定する |
| -untrusted ../intermediate/intermediate.crt | チェーン構築に使うIntermediate CA証明書を指定する |
| -purpose sslserver | TLSサーバー証明書として使用できるか検証する |
| -verify_hostname www.example.com | SANに指定したDNS名を検証する |
| -verify_ip 192.168.1.1 | SANに指定したIPアドレスを検証する |
OpenSSL公式ドキュメント
Section titled “OpenSSL公式ドキュメント”-
openssl-genpkey 秘密鍵の生成方法と、鍵生成アルゴリズム固有のオプション。
-
openssl-pkey 秘密鍵・公開鍵の読み込み、表示、変換、整合性確認。
-
openssl-req CSRの作成、Subjectの対話入力、各オプション。
-
openssl-x509 CSRへのCA署名、証明書の作成、表示、変換。
-
openssl-verify 証明書チェーン、DNS名、IPアドレスの検証。
-
x509v3_config
basicConstraints、keyUsage、extendedKeyUsage、subjectAltNameなどのX.509拡張設定形式。