opensslで内部用のCAを作るときに、CAシェル(/etc/pki/tls/misc/CA)とopenssl.cnfをカスタマイズする必要があるが、
そのときのメモ。(CentOS 5で実行)



・openssl.cnf
設定の内容は、
http://www.technoids.org/openssl.cnf.html
を参照。

・ca, req, x509 コマンドで参照される
・caコマンドでは[ca]セクションが、reqコマンドでは[req]セクションが読み込まれる
・内部で他のセクションを参照できる
・-name, -extensions といったオプションで、参照設定を上書きできる
・デフォルトでは、caコマンドはusr_certセクションを、reqコマンドはv3_caセクションを参照している。



・CA
環境変数のCATOPはnewcaでディレクトリを作るときのみ使われる。あとは、openssl.cnfの値が使われる。
CAKEY, CAREQ, CACERTは相対パスでないといけない。

設定ファイルをカスタマイズした場合、
SSLEAY_CONFIG=”-config ファイル名”
とする。

newcaは、
1.秘密鍵とCSRの生成
2.1.で生成したCSRに、同じく1.で生成した秘密鍵で自己署名
という手順を踏む。
2.の署名はcaコマンドを使うため、そのままではopenssl.cnfのusr_certセクションを参照してしまい、CA用の証明書が生成されないにならない(basicConstraints=CA:FALSEになってしまう)。
多くのサイトでは、usr_certセクションを直接書き換えて対応しているが、v3_caセクションを参照するようにした方がエレガントではないかと思う。
ということで、

            $CA -out ${CATOP}/$CACERT $CADAYS -batch -extensions v3_ca \
-keyfile ${CATOP}/private/$CAKEY -selfsign \
-infiles ${CATOP}/$CAREQ


とした。