X509Certificate2.MatchesHostname(String, Boolean, Boolean) メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
証明書が指定されたホスト名と一致するかどうかを確認します。
public bool MatchesHostname(string hostname, bool allowWildcards = true, bool allowCommonName = true);
member this.MatchesHostname : string * bool * bool -> bool
Public Function MatchesHostname (hostname As String, Optional allowWildcards As Boolean = true, Optional allowCommonName As Boolean = true) As Boolean
パラメーター
- hostname
- String
照合するホスト名。
- allowWildcards
- Boolean
- allowCommonName
- Boolean
true サブジェクトの共通名の値との照合を許可する場合。それ以外の場合は false。
返品
true 証明書が要求されたホスト名と一致する場合。それ以外の場合は、 false
例外
hostname パラメーターが有効な DNS ホスト名または IP アドレスではありません。
注釈
このメソッドは、IETF RFC 6125 ホスト照合ロジックのプラットフォームに依存しない実装です。 SslStream クラスでは、オペレーティング システムのホスト名検証コントロールが使用されるため、この実装とは異なる値になる可能性があります。
このメソッドの論理フローは次のとおりです。
- ホスト名が IPAddress として解析された場合、IPAddress の照合が行われます。それ以外の場合は、DNS 名の照合が行われます。
- IPAddress 照合の場合、値はサブジェクトの別名拡張子のエントリの
iPAddress値と完全に一致している必要があります。 - DNS 名の一致の場合、値はサブジェクトの別名拡張子のエントリの
dNSName値と完全に一致するか、ワイルドカードが同じ値と一致する必要があります。 - ワイルドカード一致の場合、ワイルドカードは
dNSNameエントリの最初の文字、2 番目の文字はピリオド (.)、エントリの長さが 2 より大きい必要があります。
ワイルドカードは、最初のピリオド (.) までのhostname値にのみ一致します。残りの文字は完全に一致する必要があります。 - サブジェクトの別名拡張子がない場合、または拡張機能に適切な型のエントリがない場合は、共通名の照合がフォールバックとして使用されます。
- 共通名照合の場合、サブジェクト名に 1 つの共通名が含まれており、その属性が複数値の相対識別名の一部として定義されていない場合、ホスト名は共通名属性の値と照合されます。
ワイルドカードは共通名照合では使用されないことに注意してください。
この実装では、SRV-ID値またはURI-ID値はスコープ外と見なされ、フォールバックがCN-IDに一致DNS-ID停止する理由として、その存在を使用しません。
このメソッドは、非 ASCII ホスト名を IDNA 表現に変換しません。 Unicode ドメインの場合、呼び出し元は、 IdnMapping または同等の IDNA マッパーを使用する必要があります。
ドメイン名では大文字と小文字が区別されないため、このルーチンによって実行される "正確な" 一致は OrdinalIgnoreCaseされます。
このメソッドは、ホスト名が信頼された機関によって承認されているかどうかを判断しません。 信頼の決定は、 X509Chainを介して信頼を追加で確認しないと行えません。
この方法では、証明書に id-kp-serverAuth (1.3.6.1.5.5.7.3.1) の拡張キーが使用されているかどうかは確認されません。