Chromeのアップデートをしたところ、こちらの手順で作成していたオレオレ証明書が、何故か信用されない証明書として扱われるようになってしまった。 なんじゃこりゃ、と思って調べて見たところ、こちらをみるとどうやらRFC2818ではSubjectAltNameに利用するホスト名を記述する方法が推奨されているらしく、CommonNameは非推奨になっているらしい。 で、Chrome 58からはそれに則ってSubjectAltNameが無いとエラーになるという。 おおぅ…。
こうなるとサーバ証明書を作り直す必要がある。 作り直すのはサーバ証明書だけでよい。 とりあえず、まず以下のようにコマンドを実行しCSR(newreq.pem)を作成する。
openssl req \
-new \
-key server.key \
-out newreq.pem \
-days 3650 \
-subj "/C=JP/ST=Tokyo/L=Tachikawa/O=Test.Inc/CN=*.blacknon.local" \
-config <(printf "[req]\nreq_extensions = v3_req\ndistinguished_name = req_distinguished_name\n[req_distinguished_name]\n[v3_req]\nbasicConstraints = CA:FALSE\nkeyUsage = nonRepudiation, digitalSignature, keyEncipherment\nsubjectAltName='DNS.1:*.blacknon.local'") \
CSRの作成後、ICAの設定ファイル(前回の作成手順だと/etc/pki/tls/openssl_ica.cnf)で以下の項目のコメントアウトを解除する。
/etc/pki/tls/openssl_ica.cnfcopy_extensions = copy
コメントアウトの解除後、以下のコマンドを実行してSubjectAltName付きの証明書を発行する。
/etc/pki/tls/misc/ICA -sign
以上。あとは、発行した証明書を使って設定してやるだけだ。
参考
- openssl "unable to find 'distinguished_name' in config" - Super User
- OpenSSL sign requests with extensions - Unix & Linux Stack Exchange
- OpenSSL certificate with subjectAltName one-liner | SciSpike
- subjectAltName - ぱいそにすたん!