本文へスキップ
ecdsa.com

サブジェクト代替名(SAN)

証明書が有効な DNS 名、IP アドレス、メールアドレス、URI を列挙する X.509 の拡張(OID 2.5.29.17)で、ブラウザーがサーバーのホスト名を照合するときに使う唯一のフィールドです。
別表記SANsubjectAltNameSAN certificatemulti-domain certificate

エントリーには型があります。dNSName(example.com、*.example.com)、iPAddress(4 バイトまたは 16 バイト)、S/MIME 用の rfc822Name、SPIFFE ID などのための uniformResourceIdentifier、Microsoft の UPN などのための otherName です。ホスト名の照合は、RFC 9525 で更新された RFC 6125 に従います。ワイルドカードは左端のラベルちょうど 1 つにだけ一致するため、*.example.com は www.example.com に一致しますが、example.com や a.b.example.com には一致しません。

Chrome はバージョン 58(2017年)以降、サブジェクトの commonName を無視しているため、名前が CN にしかない証明書は ERR_CERT_COMMON_NAME_INVALID で検証に失敗します。Go、Python、OpenSSL のクライアントも、ホスト名には SAN を必須としています。サブジェクトが空の証明書では、SAN をクリティカルとしてマークしなければなりません(RFC 5280 §4.2.1.6)。

公開 TLS 証明書には多数の SAN を含めることができます。各名前は個別に検証しなければならず、そのすべてが Certificate Transparency のログで公開されます。公開証明書に含めた内部のホスト名が公になってしまうのはそのためです。

規格と参考文献

すべての用語