繁体   English   中英

签署 Windows EXE 文件

[英]Signing a Windows EXE file

我有一个EXE文件,我想对其进行签名,以便 Windows 不会就来自“未知发布者”的应用程序向最终用户发出警告。 我不是 Windows 开发人员。 所讨论的应用程序是从生成屏幕保护程序应用程序的应用程序生成的屏幕保护程序。 因此,我对文件的生成方式没有影响。

我已经发现我需要来自像Verisign或 instantssl.com 这样的CA代码签名证书。 我不明白的是我需要做什么(如果可能的话)来签署我的 EXE 文件。 什么是简单的解释?

Mel Green 的回答让我更进一步,但 signtool 要我指定在任何情况下使用什么证书。 我能否以某种方式获得免费的代码签名证书来测试这是否对我有用?

还请说明哪种证书类型是正确的。 大多数站点只提到“代码签名”并谈论对用户实际编译的应用程序进行签名。 这不是我的情况。

你可以尝试使用微软的签名工具

您可以将其作为适用于 Windows Server 2008 和 .NET 3.5 的 Windows SDK 的一部分进行下载。 下载后,您可以从命令行使用它,如下所示:

signtool 签名/a MyFile.exe

这使用可用的“最佳证书”对单个可执行文件进行签名。 (如果您没有证书,它将显示 SignTool 错误消息。)

或者你可以试试:

符号工具符号向导

这将启动一个向导,引导您完成对应用程序的签名。 (此选项在 Windows SDK 7.0 之后不可用。)


如果您想获得可用于测试签署可执行文件的过程的证书,您可以使用 .NET 工具Makecert

证书创建工具 (Makecert.exe)

创建自己的证书并使用它来签署可执行文件后,您需要手动将其添加为计算机的受信任根 CA,以便UAC告诉运行它的用户它来自受信任的来源。 重要的 将证书安装为 ROOT CA 会危及您的用户隐私。 看看戴尔发生了什么。 您可以在代码中和通过 Windows 找到有关完成此操作的更多信息:

希望这为任何尝试这样做的人提供更多信息!

我在工作中遇到了同样的情况,这是我们的发现

您要做的第一件事是获取证书并将其安装在您的计算机上,您可以从证书颁发机构购买证书或使用makecert生成证书

以下是 2 个选项的优缺点

购买证书

使用 Makecert 生成证书

  • 优点:
    • 步骤很简单,您可以与最终用户共享证书
  • 缺点:
    • 最终用户必须在他们的机器上手动安装证书,这取决于您的客户端,这可能不是一个选项
    • 使用 makecert 生成的证书通常用于开发和测试,而不是生产

签署可执行文件

有两种方法可以签署您想要的文件:

  • 使用安装在计算机上的证书

    signtool.exe sign /a /s MY /sha1 sha1_thumbprint_value /t http://timestamp.verisign.com/scripts/timstamp.dll /v "C:\\filename.dll"

    • 在此示例中,我们使用存储在 Personal 文件夹中的证书和 SHA1 指纹(此指纹来自证书)对位于C:\\filename.dll的文件进行签名
  • 使用证书文件

    signtool sign /tr http://timestamp.digicert.com /td sha256 /fd sha256 /f "c:\\path\\to\\mycert.pfx" /p pfxpassword "c:\\path\\to\\file.exe"

    • 在此示例中,我们使用证书c:\\path\\to\\mycert.pfx和密码pfxpassword对文件c:\\path\\to\\file.exe

测试您的签名

  • 方法一:使用signtool

    转到:开始>运行
    键入CMD > 单击确定
    在命令提示符下,输入signtool所在的目录
    运行以下命令:

    signtool.exe verify /pa /v "C:\\filename.dll"

  • 方法 2:使用 Windows

    右键单击已签名的文件
    选择属性
    选择数字签名选项卡。 签名将显示在签名列表部分。

我希望这可以帮助你

资料来源:

如果您正在进行开源开发,您可以 从 Certum获得免费的廉价代码签名证书。

我已经使用他们的证书一年多了,它确实摆脱了来自 Windows 的未知发布者消息。

至于签名代码,我从这样的脚本中使用signtool.exe

signtool.exe sign /t http://timestamp.verisign.com/scripts/timstamp.dll /f "MyCert.pfx" /p MyPassword /d SignedFile.exe SignedFile.exe

ASP 的杂志 ASPects 有关于如何签署代码的详细说明(您必须成为会员才能阅读该文章)。 您可以通过http://www.asp-shareware.org/下载

这是指向如何制作自己的测试证书的说明的链接。

也可能很有趣。

另一种选择,如果你需要签署的可执行文件在Linux中是使用signcodeMono项目的工具 在 Ubuntu受支持

参考https://steward-fu.github.io/website/driver/wdm/self_sign.htm注:微软 SDK 中的 signtool.exe

1.第一次(制作私人证书)

Makecert -r -pe -ss YourName YourName.cer

certmgr.exe -add YourName.cer -s -r localMachine root

2.After(将您的标志添加到您的应用程序)

signtool sign /s YourName YourApp.exe

这不是对问题的直接回答,但它是密切相关的(我希望也是有用的),因为迟早会有程序员把手伸进钱包:

因此,EV 签名的价格(OV 没有多大帮助):

1 年 379 欧元
证书文件
(似乎仅适用于波兰用户)

1 年 $350 +($50 隐藏费用)
2 年 $600
3 年 $750
(原价:每年 84 美元)
www.ksoftware.net
eToken 作为 U 盘发送。 不需要读者。 您实际上是从 Comodo (Sectigo) 购买的。 他们非常缓慢。

1 年 364 欧元+19%增值税
(OV 69+增值税)
www.leaderssl.de

1 年 499 美元
3 年 897 美元
Sectigo.com

1 年共 410 美元
2 年共 760 美元
3 年共 950 美元
www.globalsign.com

1 年:600 美元(原价 104 美元)
3 年: ?
www.digicert.com

1 年:700 美元
3年:贵得离谱
[赛门铁克.com]

更多价格在这里:
cheapsslsecurity.com 代码签名 EV
cheapsslsecurity.com 仅限 SSL!


使用以下链接签署 .exe(安装程序/安装程序)文件(在不使用 Microsoft 安装程序签名工具的情况下签署 exe/安装程序文件)

https://ebourg.github.io/jsign/#files

示例命令 java -jar jsign-2.0.jar --keystore keystore.jks" --alias alias --storepass password MyInstaller.exe

为我工作:)

还有一个选择,如果您在 Windows 10 上开发但没有安装 Microsoft 的 signtool.exe,您可以在 Windows 上的 Ubuntu 上使用 Bash 来签署您的应用程序。 这是一个运行:

https://blog.synapp.nz/2017/06/16/code-signing-a-windows-application-on-linux-on-windows/

当 MS 从 Signtool 中取出“signWizard”功能时,我构建了一个Code Signer GUI来随时随地对 exe、dll 和 powershell 文件进行签名

只需从MS SDK安装 Signtool 并使用我的 Code Signer GUI 来简化代码签名:

启动代码签名器,选择代码签名证书(如果您安装了多个),然后将您的文件拖放到代码签名器上。

欢迎提出改进建议:-)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM