如何关闭WCF服务的证书吊销';谁的客户?

如何关闭WCF服务的证书吊销';谁的客户?,wcf,soaphttpclientprotocol,certificate-revocation,Wcf,Soaphttpclientprotocol,Certificate Revocation,如何关闭WCF服务客户端的证书吊销? 客户端代理由wsdl.exe生成并继承SoapHttpClientProtocol。我想您正在查找ServicePointManager.ServerCertificateValidationCallback: 它接受RemoteCertificateValidationCallback委托: 我以前从未处理过被吊销的证书(我有权处理其他问题,如过期的SSL),但我猜您可能会这样做: class Program { static void Mai

如何关闭WCF服务客户端的证书吊销?
客户端代理由wsdl.exe生成并继承SoapHttpClientProtocol。

我想您正在查找
ServicePointManager.ServerCertificateValidationCallback

它接受
RemoteCertificateValidationCallback
委托:

我以前从未处理过被吊销的证书(我有权处理其他问题,如过期的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;
                }
            }
        }
        
        /* 
         WARNING!
     
         You should perform other cert validation checks here and not blindly 
         override your cert validation by returning true.

         Otherwise the secure channel between your client and service
         may not be secure.

        */

        return false;
    }
}

您可以在应用程序的配置文件中设置证书验证和吊销选项:


这仅适用于服务器上的客户端证书身份验证。对于客户端上的服务器证书身份验证,必须使用上述方法。请不要发布仅为链接的答案。这主要有两个原因:直接回答用户的特定问题通常会更有帮助,甚至好资源的链接有时也会出错。有关更多详细信息,请参阅。