2009-05-21 7 views
3

Ich muss einen WCF-Dienst sichern, der netTcpBinding verwendet und direkt mit einer Windows Forms-basierten Anwendung verbunden ist. Ich brauche es nur auf der Transportschicht.WCF mit netTcpBinding und Zertifikattransportsicherheit

Ich bin ziemlich sicher, dass ich es lokal arbeiten, d. H. Ich kann den Dienst lokal ausführen und eine Verbindung mit dem Client herstellen.

Wenn ich versuche, den Dienst so einzurichten, dass er im Gegensatz zu meinem lokalen Computer auf einem Server ausgeführt wird, habe ich Probleme mit dem Zertifikat. Das Fehlerprotokoll besagt, dass das Zertifikat einen privaten Schlüssel haben muss, der Schlüssel austauschen kann und dass der Prozess Zugriffsrechte für den privaten Schlüssel haben muss.

Ich verwende ein Entwicklungszertifikat, das mit makecert erstellt wurde.

makecert -n "CN=MY COMPANY DEBUG" -pe -sky exchange Debug.cer 

Ich muss zugeben, dass ich mit Zertifikaten sehr neu bin. Hat jemand irgendwelche Hinweise, wie ich das beheben kann, oder eine bessere Möglichkeit, ein Zertifikat zu verwenden, um Transportsicherheit zu einem WCF-Dienst hinzuzufügen, der netTcpBinding verwendet?

Danke.

+0

Ein paar Fragen, die helfen können. Auf welchem ​​Betriebssystem läuft der Server? Wie wird der Service gehostet? (IIS/Self-hosted) Möchten Sie das gleiche Zertifikat aus Ihrer Entwicklungsumgebung auf dem Testserver verwenden oder wird dieser Server der eigentliche Server sein? – blowdart

+0

Es ist selbst gehostet, da der Client sich direkt mit der Windorws Forms App verbindet. –

+0

Windows Server. Selbst gehostet. Es ist nicht der echte Server, sondern nur ein Entwicklungsserver für interne Tests. – 80bower

Antwort

6

Versuchen Sie folgendes:

makecert -n "CN=MY COMPANY DEBUG" -pe -sky exchange Debug.cer -sv Debug.pvk 
pvk2pfx -pvk Debug.pvk -spc Debug.cer -pfx Debug.pfx 

Sie werden dann mit drei Dateien, die CER-Datei (öffentlicher Schlüssel), die .pvk (privater Schlüssel) und der PFX (Schlüsselaustausch mit beiden) am Ende . Anschließend können Sie die PFX-Datei auf dem Server installieren wie folgt:

certutil -p "" -importPFX Certificates\Debug.pfx 

Auf der Client-Seite, die Sie brauchen nur die CER-Datei zu installieren. Diese Installationen (.cer und .pfx oben) können Sie auch über das MMC-Snap-In Zertifikate (Start, Ausführen, MMC.exe und anschließend das Zertifikate-Snap-In für den aktuellen Computer) durchführen.

+0

Ich habe das versucht und den gleichen Fehler bekommen. Wie kann ich sicherstellen, dass der Prozess Zugriffsrechte hat? – 80bower

+0

Im Zertifikat-Snap-In sollten Sie Ihr Zertifikat sowohl unter "Persönlich" als auch "Vertrauenswürdig" sehen können, wenn sich die Kommunikation auf demselben Computer befindet. Kannst du es an beiden Orten sehen? –

+0

Sollte dies in der lokalen Maschine Shop sein? Ich habe das Gefühl, dass ich mit diesen Zeugnissen den falschen Baum belle. Ich muss mehr darüber recherchieren, wie sie funktionieren, denn ich bin neu für sie. – 80bower

0

Lesen Sie this (deckt https Fall aber immer noch kann helfen) und this.

Da wir über die Sicherheit auf Transportebene sprechen, glaube ich nicht, dass Ihr Serverprozess etwas über das Zertifikat wissen sollte, mit dem Sie es bereitstellen.

+0

Muss ich kein Zertifikat angeben, wenn ich die Zertifikat-basierte Transportsicherheit für den Service verwende? – 80bower

+0

Auf der Serverseite müssen Sie es mit dem Port verbinden, den Sie für SSL verwenden. Auf dem Client importieren Sie das Zertifikat in den Speicher für vertrauenswürdige Personen, um anzugeben, dass Sie bereit sind, vertrauliche Daten an alle Personen zu übermitteln, die sich mit diesem Zertifikat identifizieren. –

Verwandte Themen