2017-10-13 102 views
0

我已經在C#.NET中開發了一個Windows服務應用程序,現在正嘗試從這個在Java中開發的Windows服務調用Web服務。我的客戶向我提供了帶有.cert類型和.pkcs8類型的私鑰的證書。當我嘗試調用Web服務,然後我得到以下錯誤:爲什麼會出現錯誤私鑰在X.509證書中不存在

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

這裏是我的代碼使用WSDL連接:

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

我最欣賞的,如果你能建議我在上面瞭解如何使用此證書包含私鑰以從我的代碼中調用Web服務。 在此先感謝。

+1

你能告訴我們一個調用部分嗎? – SeM

+1

使用OpenSSL將證書及其私鑰合併到PFX文件。然後將其導入您的證書存儲區。目前您只導入了觸發錯誤的證書。 –

回答

0

問題是因爲您將證書導入到Windows證書存儲區,但沒有與私鑰相關聯。您必須將.cer.pkcs8文件合併到PFX容器中。您可以使用certutil.exe太爲:

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

注:重命名你的密鑰文件有匹配的證書文件名和更改擴展.key。也就是說,這兩個文件必須位於相同的文件夾中,並具有這樣的名稱:mycert.cer,mycert.key