コンテンツにスキップ

Root CA

Root CA → Intermediate CA → Server Certificate の 証明書チェーン を作る。


Root CA
└─ Intermediate CA
└─ Server Certificate

項目 内容
OS Debian 13.x
OpenSSL 3.5
作業ディレクトリ pki/root

Root CAの自己署名証明書の作成と、中間証明書への署名に使用する 秘密鍵 を作成する。

Terminal window
openssl genpkey \
-algorithm RSA \
-aes-256-cbc \
-pkeyopt rsa_keygen_bits:4096 \
-out ca.key
chmod 600 ca.key
オプション 役割
-algorithm RSA RSA鍵を生成する
-aes-256-cbc 秘密鍵をパスフレーズで暗号化する
-pkeyopt rsa_keygen_bits:4096 鍵長を4096ビットにする
-out ca.key 秘密鍵を ca.key へ保存する
Terminal window
openssl pkey -in ca.key -check -noout

期待する結果: Key is valid


証明書 の種類ごとに、 用途と制約 を定義する。

Terminal window
vim ../extensions.cnf
[ root_ca ]
basicConstraints=critical,CA:TRUE,pathlen:1
keyUsage=critical,keyCertSign,cRLSign
subjectKeyIdentifier=hash
[ intermediate_ca ]
basicConstraints=critical,CA:TRUE,pathlen:0
keyUsage=critical,keyCertSign,cRLSign
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer
[ server_cert ]
basicConstraints=critical,CA:FALSE
keyUsage=critical,digitalSignature,keyEncipherment
extendedKeyUsage=serverAuth
subjectAltName=DNS:www.example.com,IP:192.168.1.1
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer

CA証明書へ指定する cRLSign は、 CRL への署名を許可する。

Root CA証明書にCAとしての用途と制約を付与するため、[ root_ca ] セクションを使用する。 各拡張の詳細は X.509拡張 を参照。


Subjectを対話形式で入力し、Root CA証明書の元になる CSR を作成する。

Terminal window
openssl req -new \
-key ca.key \
-out ca.csr
オプション 役割
-new 新しいCSRを作成する
-key ca.key CSRへ含める公開鍵と署名に使う秘密鍵を指定する
-out ca.csr CSRを ca.csr へ保存する

CSRへRoot CAの秘密鍵で署名し、自己署名の Root CA証明書 を作成する。

Terminal window
openssl x509 -req \
-in ca.csr \
-signkey ca.key \
-days 3650 -sha256 \
-out ca.crt \
-extfile ../extensions.cnf \
-extensions root_ca
オプション 役割
-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 ] セクションを適用する

Terminal window
openssl verify \
-CAfile ca.crt \
-check_ss_sig \
ca.crt

期待する結果: ca.crt: OK

-check_ss_sig を指定しているため、Root CA証明書の自己署名も検証される。

自己署名が正しいだけでRoot CAが信頼されるわけではない。信頼の起点として使用するには、検証側の Trust Store へ安全に登録する必要がある。



  • openssl-genpkey

    秘密鍵の生成方法と、鍵生成アルゴリズム固有のオプション。

  • openssl-pkey

    秘密鍵・公開鍵の読み込み、表示、変換、整合性確認。

  • openssl-req

    CSRと自己署名証明書の作成、Subjectの対話入力、設定ファイルの形式。

  • openssl-x509

    CSRからの自己署名証明書作成、X.509拡張の適用。

  • openssl-verify

    証明書チェーンと証明書署名の検証。

  • x509v3_config

    basicConstraints、keyUsage などのX.509拡張設定形式。