我可以在没有代码签名 EKU 的情况下使用证书签署自解压 exe 吗?

Posted

技术标签:

【中文标题】我可以在没有代码签名 EKU 的情况下使用证书签署自解压 exe 吗?【英文标题】:Can I sign a self-extracting exe with a certificate without the Code signing EKU? 【发布时间】:2017-03-30 17:46:27 【问题描述】:

我有一个使用 7zip (7z.sfx) 创建的自解压 .exe。我已经用signtool签名了。签名证书在我的本地机器存储中,它的根证书在“受信任的根证书颁发机构”和“受信任的发布者”文件夹中。

我希望签名详细信息显示在 UAC 提示的发布者字段中,但仍显示“未知发布者”。有谁知道发生了什么?该证书没有“代码签名”EKU。这会导致问题吗?

This person 有类似的问题,没有答案。 This question 详细介绍了代码签名,但它仍然不适合我。

【问题讨论】:

Signing a Windows EXE file的可能重复 您在创建证书时填写了哪些字段?是否设置了 OU? @Thomas Weller 我已经尝试了您提到的问题中的所有内容,但我仍然遇到问题。是的,我的 OU 字段已设置。 【参考方案1】:

好吧,也许正如我所怀疑的那样,用于代码签名的 EKU 对于 UAC 来说是必不可少的。使用 vanilla 证书生成签名没有问题,但 UAC 将忽略使用非代码签名证书生成的签名,即使这些证书位于 Trusted Publisers、Trusted Root Authorities 等中。

代码签名的 eku 是 1.3.6.1.5.5.7.3.3

以下 PowerShell 命令为您获取自签名代码签名证书...

New-SelfSignedCertificate -certstorelocation cert:\localmachine\my -dnsname sby-port -type CodeSigningCert

【讨论】:

以上是关于我可以在没有代码签名 EKU 的情况下使用证书签署自解压 exe 吗?的主要内容,如果未能解决你的问题,请参考以下文章

代码签名证书[关闭]

使用外部服务和iText签署PDF

InnoSetup - 代码签名证书

如何用python签署数字签名?

如何在没有 Apple 开发者帐户的情况下重新签署 IPA 文件

签署代码后多久可以摆脱智能屏幕警告?