GoogleChrome58で、HTTPSアクセス時に利用するオレオレ証明書(自己証明書)が”NET::ERR_CERT_COMMON_NAME_INVALID”となる場合の解決方法

GoogleChrome58で、HTTPSアクセス時に利用するオレオレ証明書(自己証明書)が”NET::ERR_CERT_COMMON_NAME_INVALID”となる場合の解決方法

2017年5月4日 オフ 投稿者: KYO
Table of Contents

先日、自宅の回線を隼へ変更したタイミングで、LAN内の開発用サーバのSSL証明書で以下の警告を吐くようになりました。

NET::ERR_CERT_COMMON_NAME_INVALID

簡単にいうと、証明書(自己証明書)が機能していません。
他のブラウザではOKなので、Chrome固有と見て少し静観していましたが、気持ち悪い状況なので、今回GWを利用して解消。

通常、私は以下の手順で自己証明書を作成~署名しています。
お決まりの手順なので、バッチで済ませているのですが。

[shell]
$ cat index.txt
$ openssl ca -gencrl -revoke newcerts/B0C7527CFA74DCC6.pem -config /home/myCA/myCA.cnf
$ openssl ca -gencrl -out /home/myCA/revoke.crl -config /home/myCA/myCA.cnf
$ cat index.txt
$ ./CA -newreq
$ ./CA -sign
$ cat index.txt
$ mv newreq.pem req/B0C7527CFA74DCC7.pem
$ mv newkey.pem private/B0C7527CFA74DCC7.pem
$ mv newcert.pem newcerts/B0C7527CFA74DCC7.pem
$ openssl x509 -in newcerts/B0C7527CFA74DCC7.pem -out server/<<domain>>.crt
$ openssl rsa -in private/B0C7527CFA74DCC7.pem -out server/<<domain>>.key
[/shell]

手順はこのままでOKなんですが、confの記述を一部変更が必要でした。
部分的に抜粋して紹介します。

[shell]
$ vim myCA.cnf

[ req ]
default_bits = 2048
default_md = sha256
default_keyfile = privkey.pem
distinguished_name = req_distinguished_name
attributes = req_attributes
x509_extensions = v3_ca # The extentions to add to the self signed cert
req_extensions = v3_req # 追記

[ usr_cert ]
basicConstraints=CA:FALSE
keyUsage = digitalSignature, keyEncipherment
nsComment = "OpenSSL Generated Certificate"
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer:always # ":always"追記

[ v3_req ]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names # 追記

[ alt_names ] # セクション追記
DNS.1 = thekyo.tech
DNS.2 = *.thekyo.tech

[/shell]

そもそも、この警告が出始めた原因は何か?というと…
Google Chrome58からは、署名要求作成時のCN(コモンネーム)を評価しなくなったそうです。
そのため、コモンネームとドメインが一致しても、自己証明書の場合は警告が出てしまう。

その回避方法として、SAN(X509v3 Subject Alternative Name: DNS:)を利用されるようになった…とか。

対応後の自己証明書には、確かに(X509v3 Subject Alternative Name: DNS:)の行があり、設定した [ alt_names ]の項目がありますね。
[shell]
Certificate:

X509v3 extensions:
X509v3 Basic Constraints:~
CA:FALSE
X509v3 Key Usage:~
Digital Signature, Key Encipherment
Netscape Comment:~
OpenSSL Generated Certificate

X509v3 Subject Alternative Name:~
DNS:thekyo.tech, DNS:*.thekyo.tech ———– ※
[/shell]

というわけで、無事解消。