2008-10-15 105 views

回答

9

我認爲你正在尋找ServicePointManager.ServerCertificateValidationCallback

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

,這需要RemoteCertificateValidationCallback代表:

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

我從來沒有處理(我有手來處理其他問題,如到期的SSL的)之前吊銷的證書,但我猜你只是這樣做:

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; 
    } 
}