【问题标题】:Is it possible to use a wildcard ssl certificate for code signing?是否可以使用通配符 ssl 证书进行代码签名?
【发布时间】:2017-04-20 22:47:58
【问题描述】:

我的公司 (*.mycompany.com) 有一个通配符证书,现在我接到了对安装程序可执行文件进行数字签名的任务。 我将 Signtool.exe 与生成的包含私钥和证书文件(包括中间证书)的 pfx 文件一起使用,但它总是告诉我没有证书符合所有给定标准。 (在调试输出中,我可以看到通配符证书被 EKU 过滤器过滤,中间证书和根证书被私钥过滤器过滤)。

windows 证书管理器说通配符证书只能用于服务器和客户端身份验证。我无法将代码签名添加到中间证书所具有的用途中。

是否可以使用此通配符证书进行代码签名?我错过了什么吗?

【问题讨论】:

  • 您的证书没有您已经知道的代码签名 EKU。没有它,您将无法签署您的可执行文件。

标签: ssl certificate digital-signature


【解决方案1】:

如果您可以访问密钥,则始终可以使用该密钥。但在这种情况下,必须告知用于签名的代码忽略扩展密钥的使用。而且 - 更成问题 - 验证程序也必须跳过此检查。

但是由于您的证书缺少用于代码签名的扩展密钥用法,并且由于存在扩展密钥用法,X.509 v3 certificate specs 的以下部分有效:

如果存在扩展名,则必须仅使用证书 用于所示目的之一。如果有多个目的 表明应用程序不需要承认所有表明的目的, 只要存在预期目的。证书使用 应用程序可能要求扩展密钥使用扩展是 存在并指明特定目的,以便 该应用程序可接受的证书。

现在id-kp-serverAuth 可能存在,并且由于id-kp-codeSigning 不存在,因此无法使用证书。

由于这些扩展由证书颁发机构签名,因此您不能简单地更改证书。如果您确实更改了扩展密钥用法,则证书中的签名验证将失败。


请注意,通常密钥和证书是单一用途。如果您需要代码签名证书,您可能必须创建新的密钥对和证书请求才能购买新证书。

【讨论】:

  • 谢谢。我确实最终购买了一个效果很好的新证书:)
猜你喜欢
  • 2010-09-09
  • 1970-01-01
  • 1970-01-01
  • 2016-08-30
  • 2014-12-30
  • 2015-03-06
  • 2013-04-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多