2008-10-15 107 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; 
    } 
}