OpenSSLで中間CAを作ってみる.
CAには以前作った自己署名ルートCAを利用する.
2. 中間認証局と中間CA証明書の作成
証明書を作成する手順で必要なファイルの準備を行う.
ここでは中間認証局ディレクトリを「midCA」とする.
2-1. 認証局のディレクトリ構造とファイルの配置
最初にルート認証局と同じようにディレクトリとファイルを配置.
これは前回作ったスクリプトでちゃちゃっと作る.
$ ./makeCAdirs.sh midCA
2-2. 設定ファイルの編集
設定ファイル(signCA.cnf, signCert.cnf)については、ルートCAの作成時で作った設定ファイルをそのままコピーして転用する.
1箇所、dirのパスのみを書き換えておく.
signCA.cnf / signCert.cnf の書換え
: [ CA_default ] # CAとして証明書署名要求へ署名するときに使用する設定 dir = /backup/sample/midCA # ← 中間認証局のディレクトリ(絶対パス)
3-3. 中間認証局の秘密鍵と証明書署名要求(CSR)生成
以下のコマンドを実行して中間CAの秘密鍵と証明書署名要求(CSR)を生成.
(自己署名する -x509オプションがないことに注意)
中間CA秘密鍵と証明書署名要求の生成
$ openssl req -new -newkey rsa:[鍵ビット長] \ -sha256 -days [有効日数] \ -config {midCAのDir}/conf/signCA.cnf \ -keyout {midCAのDir}/private/cakey.pem \ -out {midCAのDir}/cacert.csr
以下の順でいろいろ入力を求められるので対応.
- (1) 秘密鍵のパスワードを尋ねられるので入力.
※ このパスワードは証明書署名要求(CSR)への署名時に必要. - (2) 証明書のSubject情報(C/ST/O/OU/CN/E)を尋ねられるので適当に入力.
- (3) challenge pass は空欄でそのままでOK.
- (4) optional company name は空欄でOK.
3-4. ルート認証局で中間CAの証明書署名要求(CSR)に署名する
以下のコマンドを実行してCSRにrootCAの署名を付けて証明書を生成.
中間CA証明書署名要求への署名
$ openssl ca -policy policy_anything \ -days [有効日数] \ -config {rootCAのDir}/conf/signCA.cnf \ -in {midCAのDir}/cacert.csr \ -out {midCAのDir}/cacert.pem
midCAが以下の配置になっていればOK.
中間CA証明書生成後のmidCAディレクトリ内容
midCA/ ├── cacert.csr // <-- 中間CAの証明書署名要求 ├── cacert.pem // <-- rootCAで署名したmidCAの証明書 ├── certs/ ├── conf/ │ ├── signCA.cnf │ └── signCert.cnf ├── crl/ ├── crlnumber ├── index.txt ├── keys/ ├── newcerts/ ├── private/ │ └── cakey.pem // <-- 生成したmidCAの秘密鍵 ├── serial └── site/
中間CAの作成はコレで完了♪