Chromeの警告ERR_CERT_COMMON_NAME_INVALID(missing_subjectAltName)の対処法
Chrome 58からnet::err_cert_common_name_invalidの警告が発生しているようです。
もちろん今まで問題がなかった証明書なのでCN(COMMON_NAME)はドメインと一致しています。詳細を開くとmissing_subjectAltNameとあります。
これはChromeセキュリティ強化に依るものです。
そもそもSSL証明書でドメイン名の一致を確認する方法は2つあり、一つはCOMMON_NAMEをドメイン名として確認する方法、そしてもう一つが上にあるsubjectAltNameにあるドメイン名の一致を確認する方法です。
COMMON_NAMEはあくまでドメイン名として「解釈」されるだけであったので、紛らわしいとの理由からdeprecatedになった模様です。
subjectAltNameの方はX509v3で拡張された部分で複数のドメインを一つのSSL証明書と関連づける為のフィールドで、これからは単一のドメインでもこちらが使用されます。
ここではopensslで自己署名などの証明書を作成していた方向けに上記問題への対処方法を記します。
証明書作成時の-extfileオプションの追加
SSL証明書を作る流れは以下の様であったと思います。
iPhone/iPad等iOSに自己署名オレオレCA証明書からサーバー/クライアント証明書を署名しインストールする | 節約テクノロジ
- 秘密鍵の作成(openssl genrsa..)
- 証明書要求の作成(openssl req -new ..)
- 証明書要求に対してCA証明書と鍵で証明書を作成(openssl x509 -req .. )
ドメイン名は2番目の要求を作る時にCN(COMMON_NAME)として指定しましたが、今回は3番目の証明書を作成する時にドメイン名を指定する方法を使います。
以下のファイルをv3.extとして作成します。
subjectAltName=DNS:hoge.fuga.com
hoge.fuga.comの部分を証明したいドメイン名に書き換えます。
3番目のopenssl x509 -reqコマンドの最後に以下の様に追加します。
openssl x509 -req ... -extfile v3.ext
以上です。
出来た証明書を確認します。(certificate.pemとします)
>openssl x509 -in certificate.pem -text
.
.
X509v3 extensions:
X509v3 Subject Alternative Name:
DNS:hoge.fuga.com
.
.
Subject Alternative Nameが追加されているのが確認できます。
これを使用することでchromeの警告ERR_CERT_COMMON_NAME_INVALID(missing_subjectAltName)が出なくなります。
ちなみにSubject Alternative Nameでは複数ドメインを指定することもできます。
subjectAltName=DNS:hoge.fuga.com,DNS:moga.fuga.com