X509Certificate2.MatchesHostname(String, Boolean, Boolean) メソッド

定義

証明書が指定されたホスト名と一致するかどうかを確認します。

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

サブジェクトの別名拡張子の 値のワイルドカード 照合を許可する場合は a0/& 。それ以外の場合は。

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) の拡張キーが使用されているかどうかは確認されません。

適用対象

こちらもご覧ください