この記事は ゆるTLS Advent Calendar 2021 の7日目の記事です(2日遅れorz)。
6日目はワイルドカード証明書の話をしたので、証明書を発行してくれる認証局について。
[認証局]
TLSプロトコルの認証で利用されるX.509証明書のフォーマットは、RFC5280で決められている。そのため、OpenSSLなどのツールを使えば、決められた仕様に従って、誰もが証明書を作成することができる。
しかし、誰が作った証明書でも信頼してよいか、というとそうではない。
一般に、Webブラウザなどのアプリケーションでの通信で証明書を信頼してもらうには、認証局(Certificate Authority、CA)から発行された証明書を利用する必要がある。
証明書は単体で存在するわけではなく、(ルート)認証局の発行するルート証明書、ルート証明書の秘密鍵で署名された中間証明書、中間証明書の秘密鍵で署名されたサーバー証明書、という具合につながっている。
サーバー証明書や中間証明書は、上位の鍵で署名されているかどうかを証明書に含まれている公開鍵で検証できるが、ルート証明書はルート証明書自身の秘密鍵で署名されているため、上位の鍵で署名されているかどうかを検証することができない。
そのため、ルート証明書はOSやソフトウェアのトラストストアに含まれていることをもって検証され、信頼される。
[認証局と監査]
OSやソフトウェアのトラストストアにルート証明書を含めるには、各ストアごとの監査を通過する必要がある。
Microsoft、AppleがそれぞれのOS向けにトラストストア監査プログラムを実施しているほか、Mozillaも監査プログラムを実施している。
MozillaのトラストストアはFirefox向けであると同時に、様々なLinuxディストリビューションのトラストストアのベースとなっている*1。
他にも、Javaは独自のトラストストアを持っており、監査プログラムも実施している。
また、トラストストアごとの監査では、認証局が独立した監査を受けることを要求している。その際の監査基準としてはWebTrust、ESTI、ISO 21188:2018がある。
[認証局維持は大変]
トラストストアや独立の監査に対応しつつ、CAとしての技術的要件を満たすのは難しいらしい。
認証局(CA)とブラウザベンダなどから構成される団体CA/B Forumには50を超えるCAが参加しているなか、オランダでは、Logius PKIoverheidがヨーロッパで唯一政府機関が認証局として証明書を発行していた*2。
しかし、Logius PKIoverheidは2021年12月の証明書発行を最後に証明書発行業務を停止する予定らしい。
背景として、『プロフェッショナルSSL/TLS』93-97ページで触れられているDigiNotar事件だけでなく、2019年の証明書のシリアルナンバーのエントロピー不足問題*3、2020年の証明書の拡張設定ミス問題などがあるようだ*4。