Wie kann ich den Zertifikatswiderruf für den Client eines WCF-Dienstes deaktivieren? Der Client-Proxy wurde von wsdl.exe generiert und erbt SoapHttpClientProtocol.
Antworten
Zu viele Anzeigen?Ich glaube, Sie suchen nach ServicePointManager.ServerCertificateValidationCallback
:
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;
}
}
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