Khi thực hiện yêu cầu HTTPS đối với máy chủ web từ xa, tôi sử dụng WebRequest, thiết lập kết nối an toàn với máy chủ web từ xa. Trong quá trình phát triển, tôi sử dụng cert tự ký trên máy chủ và WebRequest không thiết lập được kết nối an toàn vì cert không hợp lệ, đó là hành vi được mong đợi.Xác minh chứng chỉ SSL từ xa trong khi yêu cầu HTTPS
Tôi đã tìm thấy mã này "kiểm soát lại" kiểm tra cert, được kích hoạt bằng cách gọi phương thức SetCertificatePolicy()
trong mã sau.
public static void SetCertificatePolicy()
{
ServicePointManager.ServerCertificateValidationCallback
+= RemoteCertificateValidate;
}
/// <summary>
/// Remotes the certificate validate.
/// </summary>
private static bool RemoteCertificateValidate(
object sender, X509Certificate cert,
X509Chain chain, SslPolicyErrors error)
{
// trust any certificate!!!
System.Console.WriteLine("Warning, trust any certificate");
return true;
}
tôi tự hỏi, nếu nó có thể làm kiểm tra đặc biệt về cert SSL từ xa (sử dụng trên mã, ví dụ), vì vậy mà tôi có thể xác minh rằng máy chủ web từ xa sử dụng cert SSL hợp lệ, và không chỉ bất kỳ hợp lệ cert, nhưng chính xác một trong những tôi muốn? Ví dụ: tôi muốn đảm bảo rằng tôi đang nói chuyện với trang web www.someplace.com, chứng nhận được cấp cho ACME Inc, với dấu vân tay 00:11:22: .....
"Phương pháp hay nhất là gì "phương pháp tiếp cận cho kịch bản này?
Cảm ơn!
Cảm ơn, đó là những gì tôi đã được loại thông tin tôi đang tìm kiếm. Chỉ cần một Q nhanh chóng, về gợi ý đầu tiên (so sánh dữ liệu cert để byte []) - tôi có cần so sánh mảng byte của chứng chỉ hợp lệ đã biết với mảng tôi đang xác minh không? –
Tôi nghĩ mảng byte sẽ là chứng chỉ trong mã hóa DER, vì vậy bạn nên so sánh với chứng chỉ tham chiếu của mình ở định dạng DER (nhiều công cụ, bao gồm công cụ chứng chỉ Windows có thể xuất sang định dạng đó). Bạn thậm chí có thể tải trực tiếp từ kho chứng chỉ (không chắc chắn cách thực hiện). – Bruno