オレオレ証明書を使うと、CAに認証されていない証明書なのでブラウザにセキュリティの警告がでる
これが出ないようにするには、今までは自分のマシン上でその証明書を信頼するように設定するだけで良かった
この手の記事はすでにたくさんあるが、Chromeの仕様が最近変わり、今までのやり方では足りないので最新のやり方をまとめてみました。
証明書にSAN(Subject Alternative Name)
を設定する
Chromeでは仕様が変わり、現在ではアクセスするドメイン名の証明書の一般名(CN)を判定せず、SAN(Subject Alternative Name)のDNS Name
の値でアクセスするドメインとの一致を判定する動作になっている。
なので、SAN
が設定されるよう証明書を作らないといけない。
opensslの設定ファイルopenssl.cnf
を探す。CentOS7
だと/etc/pki/tls/openssl.cnf
にあるが、OSやインストールの仕方によって違うはず
find /usr/lib -name openssl.cnf # 例
見つけたら、編集前にオリジナルをコピー
次に、alternate_names
にドメイン名をセットしてopenssl.cnf
に追加する. どこに追加してもOK
[ alternate_names ]
DNS.1 = example.com
DNS.2 = www.example.com
DNS.3 = mail.example.com
DNS.4 = ftp.example.com
次に、[ v3_ca ]
を同じファイル上で探して変更。
subjectAltName = @alternate_names
keyUsage = digitalSignature, keyEncipherment
次に、copy_extensions
のコメントアウトを外す
# Extension copying option: use with caution.
copy_extensions = copy # コメントアウトを外す
この設定の後で、オレオレ証明書を発行する。ここまでに設定ファイルで文法エラーがあれば、openssl
コマンドでエラーがでるはず。
openssl genrsa -out private.key 3072
openssl req -new -x509 -key private.key -sha256 -out certificate.pem -days 730
オレオレ証明書が常に信頼されるようにする
生成されたcertificate.pem
をローカルに持ってきて、ダブルクリックします。ポップアップが開くので、詳細設定で「常に信頼」されるようにする。
この辺は他の記事で言われているやり方と同じ
これで、セキュリティの警告がでなくなり、鍵マークが見えるようになったと思います。
まとめ
-
SAN
がセットされるようにopensslの設定を変えてから、証明書を発行する。 - 後は以前と同じように、ローカルマシン上でその証明書を信頼するよう設定を変える。
参考
https://stackoverflow.com/questions/21488845/how-can-i-generate-a-self-signed-certificate-with-subjectaltname-using-openssl
https://www.ipentec.com/document/windows-chrime-error-net-err-cert-common-name-invalid-using-ssl-certificate-signed-with-local-ca