我正在尝试创建一个非常简单的 WCF 客户端应用程序,它将 SOAP 消息发送到第 3 方服务。所有消息都必须经过数字签名。在我将代码添加到更大的应用程序之前,这确实是一个概念证明。
我有一个包含证书的 .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();