Chromeがコモンネームの設定を非推奨化、そのエラー対策としての自己署名証明書のCSRの作り方

2017年3月27日

ニュースソース:TEXT/PLAIN
以下は 2017年3月10日に公開されたThe Latest on Certification Authority Authorizationを要約したものです。


自己署名証明書を利用しているサイトにChromeでhttpsアクセスした場合、「Your connection is not private」のエラーが表示されることがあります。
原因は証明書のSubjectAltName(SAN)が正しく設定されていないことです。

1997年に成立したX.509v3は、証明書がドメイン名とのバインディングを示す方法として、SubjectAltName(SAN)にDNS名またはIPアドレスを設定する方法、または証明書のsubjectにコモンネーム(CommonName)属性を設定する方法を定めました。
問題は、コモンネームには不明確性があり、そのサポートは、Chromeとそのライブラリ、TLSのエコシステム全体において、長らくセキュリティバグの原因となっていたことです。

2000年に発行されたRFC2818は、サーバーの身元証明の方法として、SubjectAltNameフィールドの設定を推奨し、コモンネームの設定は非推奨としています。
多くのブラウザで、コモンネームのサポートは解除されるか不完全になりつつあります。Chrome58では、証明書のSubjectAltNameフィールドに適用するホスト名を指定する必要があります。
subjectフィールドの値は無視されます(Support for commonName matching in Certificates)。

対策としてのCSR(証明書署名要求)の作成方法

Windowsの証明書作成ツールMakecert.exeは、証明書のSubjectAltNameフィールドを設定できません。つまり、自己署名証明書を生成するためにこれを使用するべきではありません。
代わりに、Windowsのユーザーは以下の例のように、PowerShellのNew-SelfSignedCertificateコマンドを使用できます。

New-SelfSignedCertificate -DnsName "www.example.com", "example.com" -CertStoreLocation "cert:\CurrentUser\My"
注:原文ではopensslを使ったCSRの作り方と、Fiddler旧バージョンへの対応策も紹介されています。