2016-12-06 45 views
1

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

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

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

+3

您的证书没有代码签名EKU,因为您已经想清楚了。没有它你不能签署你的可执行文件。 – pepo

回答

4

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

但由于您的证书错过代码签名的扩展密钥用法,由于扩展密钥用法目前,X.509 v3 certificate specs下面的部分实际上是:

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

现在作为id-kp-serverAuth可能存在,并且因为id-kp-codeSigning不是,所以证书不能使用。

由于这些扩展是由证书颁发机构签署的签署您不能简单地更改证书。如果您确实更改了扩展密钥使用情况,那么验证证书内的签名将失败。


平时注意密钥和证书是单一用途。如果您需要代码签名证书,您可能需要创建一个新的密钥对&证书请求以购买新证书。

+0

Nitpick低于最小值编辑:X(点)509不是X5(点)09 –

+0

谢谢。我确实最终购买了一个效果很好的新证书:) –