次の方法で共有


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

true サブジェクトの別名拡張子の値にワイルドカード dNSName 一致を許可する場合は 。それ以外の場合 falseは 。

allowCommonName
Boolean

true サブジェクトの共通名の値との照合を許可する場合は 。それ以外の場合は false

戻り値

true 証明書が要求されたホスト名と一致する場合は 。それ以外の場合は false

例外

パラメーターが hostname 有効な DNS ホスト名または IP アドレスではありません。

証明書には、複数のサブジェクト代替名拡張子が含まれています。

または

サブジェクトの別名の拡張子またはサブジェクト名をデコードできませんでした。

注釈

このメソッドは、IETF RFC 6125 ホスト マッチング ロジックのプラットフォームに依存しない実装です。 SslStream クラスは、オペレーティング システムのホスト名検証コントロールを使用します。これにより、この実装とは異なる値が発生する可能性があります。

このメソッドの論理フローは次のとおりです。

  • ホスト名が として IPAddress 解析される場合は、IPAddress の照合が行われます。それ以外の場合は、DNS 名の一致が行われます。
  • IPAddress 一致の場合、値は Subject Alternative Name 拡張機能のエントリ内の値と iPAddress 完全に一致している必要があります。
  • DNS 名の一致の場合、値は Subject Alternative Name 拡張機能のエントリ内の値と dNSName 完全に一致するか、ワイルドカードが同じに一致する必要があります。
  • ワイルドカード一致の場合、ワイルドカードはエントリの最初の dNSName 文字、2 番目の文字はピリオド (.)、エントリの長さが 2 より大きい必要があります。
    ワイルドカードは最初の hostname ピリオド (.) までの値にのみ一致します。残りの文字は完全に一致する必要があります。
  • サブジェクトの別名拡張子がない場合、または拡張機能に適切な型のエントリがない場合は、共通名の一致がフォールバックとして使用されます。
  • 共通名の一致では、サブジェクト名に 1 つの共通名が含まれており、その属性が複数値の相対識別名の一部として定義されていない場合、ホスト名は Common Name 属性の値と照合されます。
    ワイルドカードは共通名の一致では使用されないことに注意してください。

この実装では、値またはURI-ID値は範囲外と見SRV-IDなされ、フォールバックDNS-IDが への一致を停止する理由として、その存在はCN-ID使用されません。

このメソッドは、ASCII 以外のホスト名を IDNA 表現に変換しません。 Unicode ドメインの場合、呼び出し元は、または同等の IdnMapping IDNA マッパーを使用する必要があります。

ドメイン名では大文字と小文字が区別されないため、このルーチン OrdinalIgnoreCaseによって実行される "正確な" 一致は です。

このメソッドは、ホスト名が信頼された機関によって承認されているかどうかを判断しません。 を使用して X509Chain信頼を追加で確認しないと、信頼の決定を行うことはできません。

この方法では、証明書id-kp-serverAuthに (1.3.6.1.5.5.7.3.1) の拡張キー使用法があることをチェックしません。

適用対象