tôi sử dụng dòng mã sau đây trong vòng một phương pháp duy nhất để kiểm tra một cách rõ ràng và tin tưởng một cert SSL từ các máy chủ sau: MyTrustedCompany.com:Làm cách nào để đặt thuộc tính 'ServerCertificateValidationCallback' về hành vi mặc định của nó?
ServicePointManager.ServerCertificateValidationCallback = Function(obj As [Object], certificate As X509Certificate, chain As X509Chain, errors As SslPolicyErrors) (certificate.Subject.Contains("CN=MyTrustedCompany.com"))
Không có vấn đề với mã -> hoạt động hoàn hảo 100%.
Vấn đề là, nó quá xa. Tôi nghĩ phạm vi của nó sẽ chỉ nằm trong phương pháp mà tôi đã vẽ nó, nhưng dường như nó là một thuộc tính được chia sẻ trên đối tượng 'ServicePointManager', và sau đó phải tồn tại cho toàn bộ ứng dụng mà tôi không muốn.
Vấn đề là sau này tôi đang gọi dịch vụ web của tôi, v.v. và nhận được ngoại lệ "Không thể thiết lập mối quan hệ tin cậy ...". Điều này là do trong dòng mã ở trên, tôi kiểm tra tên máy chủ của một đặc tả SSL cert cho phương thức đó. Tôi đã nhanh chóng kiểm tra Trả lại 'Đúng' từ cuộc gọi lại để tất cả các chứng chỉ sẽ được tin cậy thay vì kiểm tra tên cụ thể (ví dụ: MyTrustedCompany) và các yêu cầu cấp phép đã hoạt động. Đây là cách tôi biết nhiệm vụ gọi lại này đến với cha hơn là phương pháp duy nhất. Chắc chắn tôi có thể mở rộng gọi lại để bao gồm tất cả các tên chứng chỉ khác, nhưng những gì tôi sẽ thay vì làm là đặt 'ServerCertificateValidationCallback' về hành vi mặc định của nó. Giống như mã giả bên dưới:
ServicePointManager.ServerCertificateValidationCallback = Nothing 'Default checking behavior
Làm cách nào để xóa xác thực tùy chỉnh và đặt lại hành vi mặc định? Cảm ơn!
Bạn có thể đặt bằng chức năng hành vi mặc định là: Khi xác thực tùy chỉnh không được sử dụng, tên chứng chỉ được so sánh với tên máy chủ được sử dụng để tạo yêu cầu. Ví dụ: nếu Tạo (Chuỗi) được chuyển một tham số của "https://www.contoso.com/default.hmtl", hành vi mặc định là dành cho ứng dụng khách để kiểm tra chứng chỉ với www.contoso.com. http://msdn.microsoft.com/en-us/library/system.net.servicepointmanager.servercertificatevalidationcallback.aspx – Prescott