我有一个EXE http://en.wikipedia.org/wiki/EXE我想要签署该文件,以便 Windows 不会警告最终用户来自“未知发布者”的应用程序。我不是 Windows 开发人员。所讨论的应用程序是从生成屏幕保护程序的应用程序生成的屏幕保护程序。因此,我对文件的生成方式没有影响。
我已经发现我需要一个代码签名 https://en.wikipedia.org/wiki/Code_signing#Trusted-Library_Attribute证书来自CA https://en.wikipedia.org/wiki/Certificate_authority like Verisign https://en.wikipedia.org/wiki/Verisign或 instantssl.com。我不明白的是我需要做什么(如果可能的话)来签署我的 EXE 文件。简单的解释是什么?
梅尔格林的回答让我更进一步,但signtool希望我指定在任何情况下使用什么证书。我可以以某种方式获得免费的代码签名证书来测试这是否对我有用吗?
另请指定哪种证书类型是正确的。大多数网站只提到“代码签名”,并谈论对用户实际编译的应用程序进行签名。我的情况并非如此。
如何签署您的应用程序
Use 微软的签名工具 https://learn.microsoft.com/en-us/windows/win32/seccrypto/signtool签署您的应用程序。
您下载它作为视窗软件开发工具包 https://developer.microsoft.com/en-us/windows/downloads/windows-sdk/。请注意,也可以安装 SignTool 而不安装整个 SDK https://stackoverflow.com/a/52963704/1070129。安装后,您可以从命令行使用 SignTool,如下所示:
signtool sign /a /fd SHA256 /tr http://timestamp.digicert.com /td SHA256 MyFile.exe
这将签署MyFile.exe
。使用的命令行选项说明:
-
/a
将自动使用有效期最长的证书。如果您没有证书,SignTool 将显示错误。
-
/fd SHA256
将使用 SHA-256 摘要算法进行文件签名。建议使用 SHA256,它被认为比默认的 SHA1 摘要算法更安全。
-
/tr http://timestamp.digicert.com
为您签名的应用程序添加时间戳。这是极其重要因为这将使签名即使在after证书本身已经过期。的论点/tr
选项是时间戳 URL。您可以使用来自以下位置的任何时间戳 URL此免费 RFC 3161 时间戳服务器列表 https://gist.github.com/fd754e402d98430243455713efada710.
-
/td SHA256
将使用 SHA-256 摘要算法进行时间戳签名。和以前一样,建议使用 SHA256,并且认为它更安全。
如何以及何时使用自签名证书
如果您想获得可用于以下目的的证书test您签署可执行文件的过程,您可以使用MakeCert https://learn.microsoft.com/en-us/windows/win32/seccrypto/makecert创建自签名证书。
创建自己的证书并使用它来签署可执行文件后,您需要手动将其添加为您的计算机的受信任根 CA,以便UAC https://en.wikipedia.org/wiki/User_Account_Control接受您的自签名证书作为可信来源。请注意,您可以only在您自己的开发机器上执行此操作。通常你可以not在您用户的计算机上执行此操作,因为大多数用户不会接受安装新的根 CA有充分的理由 https://www.computerworld.com/article/3008113/dell-installs-self-signed-root-certificate-on-laptops-endangers-users-privacy.html.
如何摆脱“无法识别的应用程序”警告
即使您的应用程序已签名,您在尝试运行该应用程序时仍可能会看到以下警告消息:
Microsoft Defender SmartScreen 阻止无法识别的应用程序
开始。运行此应用程序可能会使您的电脑面临风险。
如何避免这个警告是一个有点复杂的话题。请参见这个答案 https://stackoverflow.com/a/66582477/1070129全面了解这些 Microsoft SmartScreen 警告以及您可以采取哪些措施以及应该了解哪些信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)