Wie akzeptiere ich ein selbstsigniertes SSL-Zertifikat in einem WCF-Client?

8

Das ist vielleicht eine blöde Frage, aber ich kann die Antwort nicht finden.

Was ich gerne machen würde: Ich habe einen WCF-Dienst, der von IIS gehostet wird. Es funktioniert perfekt, ich kann auf die WSDL zugreifen, ich habe ein selbstsigniertes Zertifikat für den Server usw. Ich möchte diesen Dienst von einem WPF-Client aufrufen.

Das Problem ist, da ich ein selbstsigniertes Zertifikat habe, bekomme ich die folgende Ausnahme, wenn ich den Service anrufe: Es konnte keine Vertrauensstellung für den sicheren SSL / TLS-Kanal mit der Berechtigung 'localhost' hergestellt werden.

Wenn ich über einen Browser auf die Site (oder den Service) zugreife, ist das kein Problem, da der Browser mich vor dem Zertifikat warnt und mir die Möglichkeit gibt, die Seite trotzdem anzusehen. Aber der WPF-Client löst nur eine Ausnahme aus.

Ich möchte den Authentifizierungsprozess nicht vollständig abschalten, ich möchte den Benutzern einfach die Option geben, diese Warnung zu ignorieren (wie es Browser tun).

Kann jemand dafür einen Code bereitstellen? Wenn Sie ein gutes, ausführliches Tutorial dazu bekommen würden, wäre es auch großartig. (Siehe, mein Problem mit den Tutorials, die ich gefunden habe, ist der Mangel an Details)

    
Tenshiko 12.02.2011, 08:55
quelle

2 Antworten

6

Sie können das Zertifikat selbst registrieren. Wenn Sie das Zertifikat ebenfalls im Client laden und es dann als vertrauenswürdig registrieren, sollten Sie diese Warnung nicht erhalten.

Sie müssen eine X509CertificateCollection finden und das Zertifikat zu dieser Sammlung hinzufügen. Ich hatte diese Art von Problem mit einem SmtpClient über Ssl.

Indem Sie System.Net.ServicePointManager.ServerCertificateValidationCallback anhängen oder System.Net.ICertificatePolicy implementieren und mein eigenes installiertes Zertifikat als gültig / vertrauenswürdig identifizieren (an System.Net.ServicePointManager.CertificatePolicy angehängt).

Das ist nicht WCF-Zeug per se, aber von dem, was ich sagen konnte, sollte dies auch WCF übersetzen. Es kommt darauf an, was WCF unter der Haube verwendet.

    
John Leidegren 12.02.2011, 09:36
quelle
12

Hier ist die Mindestmenge an Code, die Sie benötigen, damit der WCF-Client ein beliebiges Zertifikat akzeptiert. Dies ist nicht sicher . Nur zum Testen verwenden. Tadeln Sie mich nicht, wenn dieser Code Berserker wird und Ihr kleines Kätzchen isst.

%Vor%

Der Rückruf:

%Vor%

Code schamlos von der am wenigsten hilfreichen Antwort auf Ist es möglich, den WCF-Testclient zu zwingen, ein selbstsigniertes Zertifikat zu akzeptieren?

    
user8032 27.04.2012 05:59
quelle

Tags und Links