我正在尝试创建一个非常简单的 WCF 客户端应用程序,它将向第 3 方服务发送 SOAP 消息。所有消息都必须经过数字签名。在我将代码添加到更大的应用程序之前,这确实是一个概念证明。
我有一个包含证书的 .cer 文件和一个包含私钥的 .pem 文件。我一直在尝试做的是使用 .cer 文件加载证书,然后触发一条消息。但是我收到以下错误消息“X.509 证书中不存在私钥”。
问题,好吧,问题之一是,我对 WCF、数字证书、私钥和所有这些废话几乎一无所知。我读过一些书,用谷歌搜索,直到脸色发青,但一无所获。
如果我打开 .cert 文件,有一个标有“BEGIN ENCRYPTED PRIVATE KEY”的部分表明私钥包含在证书中。那么,为什么我收到一条消息说它不存在?另外,如果确实需要将私钥添加到证书中,我该如何操作?
这基本上就是我在做什么。这不是我的实际代码,但它包含所有相关内容:
MyWSClient c = new MyWSClient();
c.ClientCredentials.ClientCertificate.Certificate = new X509Certificate2(@"pathToFile.cer");
c.SomeValidCall();
最佳答案
您如何创建此证书/ key 对?您可以使用 openssl 将它们组合成 PKCS#12 证书:
openssl pkcs12 -export -in yourcert.crt -inkey yourprivkey.key -out newcert.p12
您可能需要尝试使用输入格式以使其与 .pem 私钥一起使用。
关于wcf - C# WCF 客户端错误 "The private key is not present in the X.509 certificate",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6995841/