8 Stimmen

Wie kann der Zertifikatswiderruf für den Client eines WCF-Dienstes deaktiviert werden?

Wie kann ich den Zertifikatswiderruf für den Client eines WCF-Dienstes deaktivieren? Der Client-Proxy wurde von wsdl.exe generiert und erbt SoapHttpClientProtocol.

9voto

Kev Punkte 115293

Ich glaube, Sie suchen nach ServicePointManager.ServerCertificateValidationCallback :

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

Das dauert eine RemoteCertificateValidationCallback Delegierter:

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

Ich habe noch nie mit einem widerrufenen Zertifikat zu tun gehabt (ich habe mit anderen Problemen wie abgelaufenen SSLs zu tun), aber ich schätze, Sie würden einfach etwas wie tun:

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

1voto

jezell Punkte 2522

Sie können die Optionen für die Zertifikatsvalidierung und -sperrung in der Konfigurationsdatei für Ihre Anwendung festlegen:

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X