この記事は ゆるTLS Advent Calendar 2021 の6日目の記事です。
ALPACA攻撃、TLS拡張、SNIと話が進んできたので、今日はワイルドカード証明書の話を。
[X.509証明書]
SSL証明書。サーバ証明書、クライアント証明書。ルート証明書、中間証明書。
様々な名称で呼ばれるが、TLSプロトコルにおいて通信相手が正しいサーバであることを認証するための主要な手段として利用されている*1。
この証明書に関連して、3つの標準がある。
証明書のフォーマットについて定めたX.509*2と、X509をベースにしたRFC5280と、証明書の発行に関するBaseline Requirements*3である。
フォーマットを定めた標準をもとに、X.509証明書とも呼ばれる。
X.509証明書のフォーマットとしては3つのバージョンがある。
バージョン1から利用できる「Subject(主体者)」フィールドに通信先ホスト名が、「Public Key(公開鍵)」フィールドに公開鍵が格納されており、TLSではこれらを認証と暗号化に利用する。
現在主に利用されているのは証明書の拡張が利用可能となったバージョン3である。
[ワイルドカード証明書]
X.509証明書の「Subject(主体者)」フィールドには単一のホスト名しか指定することができない。多数のサーバを管理する場合に、サーバごとに証明書を生成する手間や費用を省くため、「Subject Alternative Name(主体者の別名)」拡張が追加された。
それでも、サブドメインを後から追加したい場合に対応できないため、「*.example.com」のようにアスタリスクを指定したワイルドカード証明書が利用されるようになった。
このワイルドカード証明書を、異なるサブドメインで異なるアプリケーションプロトコルでの通信に利用している場合に問題となるのがALPACA攻撃ということになる。
ワイルドカード証明書の発行について、2021年の変更点として、ページ認証(ファイル認証)が利用できなくなるというものがある*4。
この変更は、2021年7月13日付のBaseline Requirements バージョン1.7.7の変更に由来する。
Baseline Requirementsは頻繁に更新されており、2020年8月のバージョン1.7.1では証明書の有効期限を398日以内にすることと定められた。
[まとめ]
- TLSで認証に利用される証明書の運用手順を定めているのがBaseline Requirements
- Baseline Requirements バージョン1.7.7の変更により、2021年12月以降はワイルドカード証明書の発行手法が制限される
*1:他の認証手段としてはRFC4279で定められているPre-Shared Key(PSK、事前共有鍵)による認証がある。TLS1.3ではセッション再開とPSKが統合されている。
*2:国連機関であるITU-T(International Telecommunication Union Telecommunication Standardization Sector) が定めた。
*3:CA/Browser ForumというCA(認証局)とブラウザベンダの業界団体が2012年に定めた。正式名称はBaseline Requirements for the Issuance and Management of Publicly‐Trusted Certificates。2021年12月現在の最新はバージョン1.8.0。