Root CA
Root CA → Intermediate CA → Server Certificate の 証明書チェーン を作る。
Root CA └─ Intermediate CA └─ Server Certificate| 項目 | 内容 |
|---|---|
| OS | Debian 13.x |
| OpenSSL | 3.5 |
| 作業ディレクトリ | pki/root |
1. 秘密鍵の作成
Section titled “1. 秘密鍵の作成”Root CAの自己署名証明書の作成と、中間証明書への署名に使用する 秘密鍵 を作成する。
openssl genpkey \ -algorithm RSA \ -aes-256-cbc \ -pkeyopt rsa_keygen_bits:4096 \ -out ca.keychmod 600 ca.key使用するコマンド
Section titled “使用するコマンド”主なオプション
Section titled “主なオプション”| オプション | 役割 |
|---|---|
| -algorithm RSA | RSA鍵を生成する |
| -aes-256-cbc | 秘密鍵をパスフレーズで暗号化する |
| -pkeyopt rsa_keygen_bits:4096 | 鍵長を4096ビットにする |
| -out ca.key | 秘密鍵を ca.key へ保存する |
openssl pkey -in ca.key -check -noout期待する結果:
Key is valid
2. 証明書拡張ファイルの作成
Section titled “2. 証明書拡張ファイルの作成”vim ../extensions.cnf[ root_ca ]basicConstraints=critical,CA:TRUE,pathlen:1keyUsage=critical,keyCertSign,cRLSignsubjectKeyIdentifier=hash
[ intermediate_ca ]basicConstraints=critical,CA:TRUE,pathlen:0keyUsage=critical,keyCertSign,cRLSignsubjectKeyIdentifier=hashauthorityKeyIdentifier=keyid,issuer
[ server_cert ]basicConstraints=critical,CA:FALSEkeyUsage=critical,digitalSignature,keyEnciphermentextendedKeyUsage=serverAuthsubjectAltName=DNS:www.example.com,IP:192.168.1.1subjectKeyIdentifier=hashauthorityKeyIdentifier=keyid,issuerCA証明書へ指定する cRLSign は、 CRL への署名を許可する。
Root CA証明書にCAとしての用途と制約を付与するため、
[ root_ca ]セクションを使用する。 各拡張の詳細は X.509拡張 を参照。
3. CSRの作成
Section titled “3. CSRの作成”Subjectを対話形式で入力し、Root CA証明書の元になる CSR を作成する。
openssl req -new \ -key ca.key \ -out ca.csr使用するコマンド
Section titled “使用するコマンド”主なオプション
Section titled “主なオプション”| オプション | 役割 |
|---|---|
| -new | 新しいCSRを作成する |
| -key ca.key | CSRへ含める公開鍵と署名に使う秘密鍵を指定する |
| -out ca.csr | CSRを ca.csr へ保存する |
4. Root CA証明書の作成
Section titled “4. Root CA証明書の作成”CSRへRoot CAの秘密鍵で署名し、自己署名の Root CA証明書 を作成する。
openssl x509 -req \ -in ca.csr \ -signkey ca.key \ -days 3650 -sha256 \ -out ca.crt \ -extfile ../extensions.cnf \ -extensions root_ca使用するコマンド
Section titled “使用するコマンド”主なオプション
Section titled “主なオプション”| オプション | 役割 |
|---|---|
| -req | 入力ファイルをCSRとして読み込む |
| -in ca.csr | 自己署名するCSRを指定する |
| -signkey ca.key | 自己署名に使うRoot CA秘密鍵を指定する |
| -days 3650 | 証明書の有効期間を3650日にする |
| -sha256 | SHA-256 を使って証明書へ署名する |
| -out ca.crt | 証明書を ca.crt へ保存する |
| -extfile ../extensions.cnf | 拡張を記述した設定ファイルを読み込む |
| -extensions root_ca | [ root_ca ] セクションを適用する |
openssl verify \ -CAfile ca.crt \ -check_ss_sig \ ca.crt期待する結果:
ca.crt: OK
-check_ss_sig を指定しているため、Root CA証明書の自己署名も検証される。
自己署名が正しいだけでRoot CAが信頼されるわけではない。信頼の起点として使用するには、検証側の Trust Store へ安全に登録する必要がある。
OpenSSL公式ドキュメント
Section titled “OpenSSL公式ドキュメント”-
秘密鍵の生成方法と、鍵生成アルゴリズム固有のオプション。
-
秘密鍵・公開鍵の読み込み、表示、変換、整合性確認。
-
CSRと自己署名証明書の作成、Subjectの対話入力、設定ファイルの形式。
-
CSRからの自己署名証明書作成、X.509拡張の適用。
-
証明書チェーンと証明書署名の検証。
-
basicConstraints、keyUsageなどのX.509拡張設定形式。