【发布时间】:2011-05-08 09:57:10
【问题描述】:
最近,我需要与 Java Web 服务交换 SOAP 消息,其中数字签名消息对于通信是必需的。正如预期的那样,该过程是使用私钥对消息进行签名,以便对方站点使用公共密钥等对其进行验证。这次唯一不同的是,对面的是权威本身。
我最初使用以下命令创建证书请求
openssl req -new -newkey rsa:1024 -keyout myprivatekey.pem -out myrequest.pem
上面的命令创建了私钥和我的证书请求。之后,我向他们(通过他们的网站)发送证书请求“myrequest.pem”,以便他们授权证书并创建最终的(有效)证书。当我收到我的回答时(让我们说授权证书“complete.pem”),连同之前生成的 myprivatekey.pem,我创建了应该可以立即使用的 .pfx 私钥。
openssl pkcs12 -export -out myprivatekey.pfx -in complete.pem -inkey myprivatekey.pem -name "testcertificate"
上面创建了我成功验证证书的 myprivatekey.pfx。当我尝试使用以下代码通过 Studio 2005 和 WSE 3.0 对我的消息进行签名时,问题就开始了:
X509Certificate2 cert = new X509Certificate2(path,"pass");
X509SecurityToken certToken = new X509SecurityToken(cert);
certToken 的 SupportsDigitalSignature 属性设置为 false,因此我无法签署我的消息,因此无法继续。请注意,使用我自己颁发并加载到 X509SecurityToken 中的自签名证书和私钥的相同过程似乎支持数字签名(property is true)。
我想这与我从他们那里获得的最终授权证书有关,但我开始怀疑我做错了什么。
有什么要检查的想法吗?
【问题讨论】:
标签: c# .net security openssl x509certificate