ま、そんなところで。

ニッチな技術系メモとか、車輪を再発明してみたりとか.

OpenSSLでx509証明書 (2) 〜 中間認証局(CA)を作る 〜

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の作成はコレで完了♪