2008-10-15 10 views

Trả lời

9

Tôi nghĩ rằng bạn đang tìm kiếm ServicePointManager.ServerCertificateValidationCallback:

http://msdn.microsoft.com/en-gb/library/system.net.servicepointmanager.servercertificatevalidationcallback.aspx

nào mất một Đại biểu RemoteCertificateValidationCallback:

http://msdn.microsoft.com/en-gb/library/system.net.security.remotecertificatevalidationcallback.aspx

Tôi chưa từng xử lý chứng chỉ bị thu hồi trước đó (tôi có tay để xử lý các vấn đề khác như SSL đã hết hạn), nhưng tôi đoán bạn chỉ cần làm một cái gì đó như:

class Program 
{ 
    static void Main(string[] args) 
    { 
     ServicePointManager.ServerCertificateValidationCallback += 
      new RemoteCertificateValidationCallback(ValidateCertificate); 

     // Do WCF calls... 
    } 

    public static bool ValidateCertificate(object sender, X509Certificate cert, 
           X509Chain chain, SslPolicyErrors sslPolicyErrors) 
    { 
     if(sslPolicyErrors == SslPolicyErrors.RemoteCertificateChainErrors) 
     { 
      foreach(X509ChainStatus chainStatus in chain.ChainStatus) 
      { 
       if(chainStatus.Status == X509ChainStatusFlags.Revoked) 
       { 
        return true; 
       } 
      } 
     } 

     return false; 
    } 
} 
1

Bạn có thể đặt xác thực chứng chỉ và các tùy chọn thu hồi trong tệp cấu hình cho ứng dụng của bạn:

http://www.request-response.com/blog/PermaLink,guid,e9bb929b-d0b4-4626-b302-1d2715fc344a.aspx

+3

Điều này chỉ đúng đối với xác thực chứng chỉ ứng dụng khách trên máy chủ. Để xác thực chứng chỉ máy chủ trên máy khách, bạn phải sử dụng phương thức trên. –

+0

Vui lòng không đăng câu trả lời chỉ là liên kết. Có hai lý do chính cho việc này: thường hữu ích hơn nhiều khi trả lời trực tiếp các vấn đề cụ thể của người dùng và thậm chí cả các liên kết đến các tài nguyên tốt đôi khi trở nên tồi tệ. Vui lòng xem [bài đăng meta này] (http://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links-elsewhere-really-good-answers) để biết thêm chi tiết. – Pops