2017-10-13 3 views
0

Ich habe eine Windows-Dienstanwendung in C# .NET entwickelt und versuche nun, einen Webdienst von diesem Windows-Dienst aufzurufen, der in Java entwickelt wurde. Mein Client hat mir das Zertifikat mit dem Typ .cert und dem privaten Schlüssel im Format .pkcs8 zur Verfügung gestellt. Wenn ich versuche, den Web-Service rufen dann bekomme ich folgende Fehlermeldung:Warum Fehler erhalten Der private Schlüssel ist nicht im X.509-Zertifikat vorhanden

The private key is not present in the X.509 certificate.

Hier mein Code mit Wsdl zu verbinden ist:

<clientCredentials> 
<serviceCertificate> 
    <authentication certificateValidationMode="PeerTrust" trustedStoreLocation="CurrentUser" /> 
</serviceCertificate> 
<clientCertificate storeLocation="CurrentUser" storeName="Root" findValue="176455DB76886FF2BA3C122F8B36322F647CB2FD" x509FindType="FindByThumbprint"/>      
</clientCredentials> 

Ich würde am meisten freuen, wenn Sie mich auf dem oben vorschlagen könnte zu wissen, wie der private Schlüssel mit diesem Zertifikat eingebunden wird, um den Web-Service von meinem Code aus aufzurufen. Vielen Dank im Voraus.

+1

Können Sie uns einen Anrufteil zeigen? – SeM

+1

Verwenden Sie OpenSSL, um das Zertifikat und seinen privaten Schlüssel mit einer PFX-Datei zusammenzuführen. Dann importieren Sie das in Ihren Zertifikatspeicher. Derzeit haben Sie nur das Zertifikat importiert, das den Fehler ausgelöst hat. –

Antwort

0

Das Problem liegt daran, dass Sie das Zertifikat in den Windows-Zertifikatspeicher importiert haben, aber nicht mit einem privaten Schlüssel verknüpft sind. Sie müssen .cer und .pkcs8 Dateien in PFX-Container zusammenführen. Sie können certutil.exe auch dafür verwenden:

certutil -mergepfx path\mycert.cer path\mycert.pfx 

Hinweis: Ihre Schlüsseldatei umbenennen, um Zertifikat Dateinamen und Änderung Erweiterung .key haben übereinstimmen. Das heißt, beide Dateien müssen sich im selben Ordner befinden und folgende Namen haben: mycert.cer, mycert.key.

Verwandte Themen