X509Certificate2.MatchesHostname(String, Boolean, Boolean) Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Memeriksa untuk melihat apakah sertifikat cocok dengan nama host yang disediakan.
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
Parameter
- hostname
- String
Nama host yang cocok dengan.
- allowWildcards
- Boolean
true
untuk mengizinkan pencocokan kartubebas untuk dNSName
nilai dalam ekstensi Nama Alternatif Subjek; jika tidak, false
.
- allowCommonName
- Boolean
true
untuk memungkinkan pencocokan terhadap nilai Nama Umum subjek; jika tidak, false
.
Mengembalikan
true
jika sertifikat cocok dengan nama host yang diminta; Sebaliknya false
Pengecualian
Parameter hostname
bukan nama host DNS atau alamat IP yang valid.
Sertifikat berisi beberapa ekstensi Nama Alternatif Subjek.
-atau-
Ekstensi Nama Alternatif Subjek atau Nama Subjek tidak dapat didekodekan.
Keterangan
Metode ini adalah implementasi netral platform dari logika pencocokan host IETF RFC 6125. Kelas SslStream menggunakan validator nama host dari sistem operasi, yang dapat mengakibatkan nilai yang berbeda dari implementasi ini.
Alur logis dari metode ini adalah:
- Jika nama host diurai sebagai IPAddress pencocokan IPAddress dilakukan; jika tidak, pencocokan Nama DNS dilakukan.
- Untuk pencocokan IPAddress, nilai harus sama persis dengan
iPAddress
nilai dalam entri ekstensi Nama Alternatif Subjek. - Untuk pencocokan Nama DNS, nilai harus sama persis dengan
dNSName
nilai dalam entri ekstensi Nama Alternatif Subjek, atau kecocokan kartubebas terhadap yang sama. - Untuk pencocokan kartubebas, kartubebas harus menjadi karakter pertama dalam
dNSName
entri, karakter kedua harus berupa titik (.), dan entri harus memiliki panjang yang lebih besar dari dua.
Kartubebas hanya akan cocok denganhostname
nilai hingga periode pertama (.), karakter yang tersisa harus sama persis. - Jika tidak ada ekstensi Nama Alternatif Subjek, atau ekstensi tidak memiliki entri jenis yang sesuai, maka pencocokan Nama Umum digunakan sebagai fallback.
- Untuk Pencocokan Nama Umum, jika Nama Subjek berisi satu Nama Umum, dan atribut tersebut tidak didefinisikan sebagai bagian dari Nama Khusus Relatif multinilai, maka nama host dicocokkan dengan nilai atribut Nama Umum.
Perhatikan bahwa kartubebas tidak digunakan dalam pencocokan Nama Umum.
Implementasi ini menganggap SRV-ID
nilai atau URI-ID
nilai sebagai di luar cakupan, dan tidak akan menggunakan kehadirannya sebagai alasan untuk menghentikan fallback DNS-ID
agar tidak cocok dengan CN-ID
.
Metode ini tidak mengonversi nama host non-ASCII ke representasi IDNA. Untuk domain Unicode, pemanggil harus menggunakan IdnMapping atau pemeta IDNA yang setara.
Kecocokan "persis" yang dilakukan oleh rutinitas ini adalah OrdinalIgnoreCase, karena nama domain tidak peka huruf besar/kecil.
Metode ini tidak menentukan apakah nama host diotorisasi oleh otoritas tepercaya. Keputusan kepercayaan tidak dapat dibuat tanpa juga memeriksa kepercayaan melalui X509Chain.
Metode ini tidak memeriksa bahwa sertifikat memiliki penggunaan kunci yang id-kp-serverAuth
diperluas (1.3.6.1.5.5.7.3.1).