Autor Beitrag
navigato
Hält's aus hier
Beiträge: 14
Erhaltene Danke: 1

Win7
C#,Firebird
BeitragVerfasst: Do 12.11.09 21:54 
Hallo Experten!

Ich - Anfänger im Bereich WCF - habe einen WCF-Selfhosting-Programm geschrieben, das einen Eigenbau-Service hosten soll, welcher auf einem WSHttpBinding mit dem ClientCredentialType "UserName" basiert. Der Service muss somit seine Identität mit einem Zertifikat nachweisen. Ein solches habe ich mit Hilfe des makecert-Tools wie folgt erstellt:

makecert -n "CN=X2016" -iv RS.pvk -ic RS.cer -pe -e 04/30/2016 -sky exchange X2016.cer

Die so erfolgreich erstellte Zertifikatdatei X2016.cer habe ich dann installiert. Sie wird in meinem Host auch gefunden, aber beim Öffnen des ServiceHost-Objekts erscheint der Fehler

Zitat:
Das Zertifikat "CN=X2016" muss einen privaten Schlüssel aufweisen, der den Schlüsselaustausch unterstützt. Der Prozess muss über Zugriffsrechte für den privaten Schlüssel verfügen.


Der Fehler erscheint allerdings nicht wenn ich makecert um die Parameter
-sk X2016 und
-ss My und (optional)
-sr currentuser
erweitere, was zum automatischen Ablegen des Zertifikats im Zertifikatspeicher führt und somit das Installieren des Zertifikats überflüssig macht. Diese Problematik ist scheinbar unabhängig vom Betriebssystem, ich habe es mit XP,Vista und 7 getestet.

Meine Frage ist: Ist es überhaupt möglich ein Test-Zertifikat mit makecert zunächst als Datei zu erstellen, dann zu installieren und dann zu verwenden? Und falls ja: Wie unterscheidet sich das "manuelle" Installieren eines solchen Zertifikats von der Installation innerhalb von makecert?

Ein Beschreibung eines solchen Problems habe ich irgendwie bisher nicht gefunden, die Beschreibungen von makecert beinhalten überall nur Hinweise, wie man damit Zertifikate erstellt. Ich wäre super dankbar, wenn ich hier eine Antwort erhalten könnte.


Zuletzt bearbeitet von navigato am Do 19.11.09 22:26, insgesamt 1-mal bearbeitet
navigato Threadstarter
Hält's aus hier
Beiträge: 14
Erhaltene Danke: 1

Win7
C#,Firebird
BeitragVerfasst: Do 19.11.09 22:25 
ich habe es gefunden:

wie beispielsweise unter social.msdn.microsof...e6-8d89-6dbd62efcaf0 oder msdn.microsoft.com/e...ibrary/dd419904.aspx zu erfahren ist, enthält eine .cer-Datei keinen privaten Schlüssel, weshalb mein Service letztlich den Fehler produziert hat, da nach der Installation der cer-Datei eben gar kein privater Schlüssel im Zertifikat des Zertifikatsspeichers enthalten war.

Lösung: Es kann eine pfx-Datei erstellt werden, wenn man beabsichtigt, die Informationen des Zertifikats inkl. öffentlichem und privaten Schlüssel per Datei weiterzugeben. Eine solche Datei erhält man, indem man aus dem Zertifikate-Speicher der sog. Zertifikatsexport-Assistent aufruft. Dieser wird mit Hilfe des Popup-Menues "Alle Aufgaben" | "Exportieren" gestartet. Alternativ kann man dieses auch durch den direkten Aufruf des Tools Pvk2Pfx.exe erreichen. Die pfx-Datei kann dann mit dem Zertifikatsimport-Assistent (durch doppelklicken der pfx-Datei) in den Zertifikatsspeicher importiert werden.