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

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

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

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

NET::ERR_CERT_COMMON_NAME_INVALID

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

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

$ 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

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

$ 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
...

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

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

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

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 ----------- ※

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