我在C#.NET中开发了一个Windows服务应用程序,现在尝试从这个用Java开发的Windows服务调用Web服务。我的客户端为我提供了.cek类型的证书和.pkcs8类型的私钥。当我尝试调用Web服务时,我收到以下错误:
X.509证书中不存在私钥。
这是我与wsdl连接的代码:
<clientCredentials>
<serviceCertificate>
<authentication certificateValidationMode="PeerTrust" trustedStoreLocation="CurrentUser" />
</serviceCertificate>
<clientCertificate storeLocation="CurrentUser" storeName="Root" findValue="176455DB76886FF2BA3C122F8B36322F647CB2FD" x509FindType="FindByThumbprint"/>
</clientCredentials>
如果你能在上面建议我知道如何使用这个证书包含私钥来从我的代码中调用Web服务,我将非常感激。 提前谢谢。
答案 0 :(得分:0)
问题是您将证书导入Windows证书存储区,但未与私钥关联。您必须将.cer
和.pkcs8
文件合并到PFX容器中。您也可以使用certutil.exe
:
certutil -mergepfx path\mycert.cer path\mycert.pfx
注意:将您的密钥文件重命名为与证书文件名匹配,并将扩展名更改为.key
。也就是说,这两个文件必须位于同一文件夹中并具有名称,如下所示:mycert.cer
,mycert.key
。