การอนุญาตใบรับรองทั้งหมดนั้นมีประสิทธิภาพมาก แต่ก็อาจเป็นอันตรายได้เช่นกัน หากคุณต้องการอนุญาตเฉพาะใบรับรองที่ถูกต้องรวมทั้งใบรับรองบางอย่างก็สามารถทำได้เช่นนี้
.Net core:
using (var httpClientHandler = new HttpClientHandler())
{
httpClientHandler.ServerCertificateCustomValidationCallback = (message, cert, chain, sslPolicyErrors) => {
if (sslPolicyErrors == SslPolicyErrors.None)
{
return true; //Is valid
}
if (cert.GetCertHashString() == "99E92D8447AEF30483B1D7527812C9B7B3A915A7")
{
return true;
}
return false;
};
using (var httpClient = new HttpClient(httpClientHandler))
{
var httpResponse = httpClient.GetAsync("https://example.com").Result;
}
}
กรอบสุทธิ
System.Net.ServicePointManager.ServerCertificateValidationCallback += delegate (
object sender,
X509Certificate cert,
X509Chain chain,
SslPolicyErrors sslPolicyErrors)
{
if (sslPolicyErrors == SslPolicyErrors.None)
{
return true; //Is valid
}
if (cert.GetCertHashString() == "99E92D8447AEF30483B1D7527812C9B7B3A915A7")
{
return true;
}
return false;
};
ปรับปรุง:
วิธีรับcert.GetCertHashString()
คุณค่าใน Chrome:
คลิกที่Secure
หรือNot Secure
ในแถบที่อยู่
จากนั้นคลิกที่ใบรับรอง -> รายละเอียด -> รหัสประจำตัวและคัดลอกค่า cert.GetCertHashString().ToLower()
โปรดจำไว้ว่าจะทำอย่างไร