首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >私钥证书在通过X509Certificate加载时不支持数字签名。

私钥证书在通过X509Certificate加载时不支持数字签名。
EN

Stack Overflow用户
提问于 2010-11-11 11:10:34
回答 3查看 3K关注 0票数 0

最近,我面临着与java web服务交换SOAP消息的需要,在该服务中,必须对消息进行数字签名才能进行通信。正如预期的那样,这个过程使用一个私钥对消息进行签名,以便相对的站点使用一个公共的e.t.c验证它。这一次唯一的不同是,与之相反的是管理局本身。

我最初使用以下命令创建证书请求

代码语言:javascript
复制
openssl req -new -newkey rsa:1024 -keyout myprivatekey.pem  -out myrequest.pem 

上面的命令创建私钥和对我的证书的请求。之后,我(通过他们的站点)向他们发送证书请求"myrequest.pem“,以便他们授权证书并创建最终的(和有效的)证书。当我收到我的答案时(比如授权证书"complete.pem"),加上前面生成的myprivatekey.pem,我创建了.pfx私钥,该私钥应该可以立即使用。

代码语言:javascript
复制
openssl pkcs12 -export -out myprivatekey.pfx -in complete.pem -inkey myprivatekey.pem -name "testcertificate"

上面创建了myprivatekey.pfx,我成功地对证书进行了验证。当我试图通过Studio 2005和WSE 3.0用以下代码对消息签名时,问题就开始了:

代码语言:javascript
复制
X509Certificate2 cert = new X509Certificate2(path,"pass");
X509SecurityToken certToken = new X509SecurityToken(cert);

SupportsDigitalSignature属性的certToken设置为false,因此我无法对消息签名,因此不能继续。请注意,与我自己颁发并在X509SecurityToken中加载的自签名证书和私钥相同的过程似乎支持数字签名(属性为true)。

我想这与我从他们那里得到的最终授权证书有关,但我开始怀疑我做错了什么。

有什么好查的吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-11-11 12:34:18

将证书安装到Windows证书存储区(双击资源管理器中的PFX文件)。然后转到Internet中的Internet设置对话框,并在Content选项卡上找到“证书”按钮。在打开的对话框中,找到已安装的证书并浏览它的详细信息。检查密钥使用字段。它必须包括数字签名(或类似的词)。

更新:正如我在下面的评论中提到的,如果生成证书的是对方,您可以问他们在处理您的请求时,他们的软件是否正确地设置了密钥使用扩展。通常CA的职责是设置密钥使用,因为它们授权您将此证书用于特定目的。

票数 1
EN

Stack Overflow用户

发布于 2010-11-11 12:36:13

可能您的证书不包括数字签名作为有效的密钥使用。您可以使用以下命令来检查它:

代码语言:javascript
复制
openssl x509 -in complete.pem -purpose
票数 0
EN

Stack Overflow用户

发布于 2010-11-11 14:48:30

使用-x509开关生成自签名证书时,将“请求”不同的默认扩展。查看您的OpenSSL配置文件,特别是req_extensions和x509_extensions部分。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4153769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档