签名Windows EXE文件

我有一个EXE文件,我想要签名,这样Windows就不会警告终端用户来自“未知发行商”的应用程序。我不是Windows开发人员。所讨论的应用程序是由生成屏幕保护程序的应用程序生成的屏幕保护程序。因此,我对如何生成文件没有影响。

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

Mel Green的回答让我更进一步,但signtool希望我指定在任何情况下使用什么证书。我能得到一个免费的代码签名证书来测试这是否对我有用吗?

另外,请指定哪种证书类型是正确的。大多数网站只提到“代码签名”,并谈论签名实际由用户编译的应用程序。对我来说不是这样。

310922 次浏览

你可以尝试使用微软的符号工具

你可以把它作为Windows Server 2008和。net 3.5的Windows SDK的一部分来下载。下载后,你可以像这样从命令行使用它:

signtool sign /a MyFile.exe

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

或者你可以试试:

signtool signwizard

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


如果你想获得一个证书,你可以用它来测试你对可执行文件的签名过程,你可以使用。net工具Makecert

证书创建工具(Makecert.exe

一旦你创建了自己的证书并使用它来签署你的可执行文件,你需要手动为你的机器添加一个受信任的根CA,以便UAC告诉运行它的用户它来自一个受信任的来源。重要的。你可以在代码和Windows中找到更多信息:

希望这能给想要这样做的人提供更多的信息!

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

这里有一个描述如何制作自己的测试证书的链接。

可能也很有趣。

如果你在做开源开发,你可以得到一个代码签名证书从Certum。我已经使用他们的证书一年多了,它确实摆脱了来自Windows的未知发布者消息。价格历史:

  • 2005 - 14.00欧元
  • 2019年- 25.00欧元
  • 2022年——69.00欧元

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

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

如果你需要在Linux机器上对可执行文件进行签名,另一种选择是使用Mono项目工具. xml文件中的signcode。它是Ubuntu支持

还有一种选择,如果你是在Windows 10上开发,但没有安装微软的signtool.exe,你可以在Windows上的Ubuntu上使用Bash来为你的应用签名。

< a href = " https://blog.synapp。新西兰/ 2017/06/16 / code-signing-a-windows-application-on-linux-on-windows / noreferrer“rel = > https://blog.synapp.nz/2017/06/16/code-signing-a-windows-application-on-linux-on-windows/ < / >

参考https://steward-fu.github.io/website/driver/wdm/self_sign.htm 注:signtool.exe来自Microsoft SDK

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

Makecert -r -pe -ss YourName YourName.cer

certmgr.exe -添加你的名字。cer -s -r localroot

2.之后(添加你的签名到你的应用程序)

signtool sign /s YourName YourApp.exe

使用以下链接签署。exe(安装程序/安装程序)文件(签署exe/安装文件而不使用Microsoft安装程序signtool)

< a href = " https://ebourg.github。io / jsign / #文件noreferrer“rel = > https://ebourg.github.io/jsign/文件< / >

命令示例Java -jar jsign-2.0.jar——keystore keystore。——alias别名——storepass密码MyInstaller.exe

为我工作过:)

我在工作中遇到过同样的情况,下面是我们的发现

你要做的第一件事是获得证书并将它安装到你的计算机上,你可以从证书颁发机构购买一个,也可以使用makecert生成一个。

以下是这两种选择的优缺点

购买证书

使用Makecert生成证书

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

签署可执行文件

有两种方式签名你想要的文件:

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

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

    • 在本例中,我们使用存储在个人文件夹中的证书,该证书具有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"

  • 方式二:Windows

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

我希望这能帮助到你

来源:

这并不是对这个问题的直接回答,但它是密切相关的(我希望它是有用的),因为任何一个程序员迟早都会把手伸进钱包里。

因此,EV(扩展验证)代码签名证书的价格,按价格排序:

< p > < >强AboutSSL < / >强
240美元/年(标题党价格)
$287/年(实际价格,优惠券后)

< p > <强> KSoftware.net < / >强
1年$350 +($50隐藏费用!)
2年$600
3年$750

OV:每年84元(为期3年)

我从他们那里买了一辆电动汽车。几年后,我买了一台OV。eToken是通过u盘发送的。不需要阅读。他们只是中介。最后,你实际上是从Comodo (Sectigo)购买。 Sectigo非常慢。 第二次核查花了整整两个月。多次验证失败。一切都很麻烦。技术支持人员不知道发生了什么,可能只是一个在巴基斯坦的家伙在阅读一些脚本 < p > < >强Sklep.certum.pl < / >强
1年379欧元
(似乎只对波兰用户)

< p > < >强LeaderSsl.de < / >强
1年364欧元或307欧元(+19%增值税)
(OV 69 +增值税)< / p > < p > <强> Sectigo.com < / >强
1年$499 USD
3年$897 USD

< p > <强> GlobalSign.com < / >强
1年$410总
2年总计760美元
3年总计950美元

< p > <强> Digicert.com < / >强
1年:$600(原价$104)
3年:?

< p > symantec.com
1年:$700
3年:荒唐的昂贵

更多价格在这里:
合作设计电动汽车
仅SSL ! < / p >


EV vs OV

使用EV,需要额外的9个步骤,包括验证企业的公共电话号码、营业时间、注册号码和管辖范围,以及域名欺诈检查、联系人黑名单检查和电话验证请求者的雇佣状态。

一些建议提交一个与OV签署的程序到微软进行反病毒检查。


如果你发现更便宜的价格,让我知道,我会更新清单!


如何使用证书?

为了对exe文件进行签名,我使用了MS signtool.exe。为此,你需要下载庞大的微软Windows SDK,其容量高达1GB。幸运的是,您不必安装它。只需打开ISO并提取“Windows SDK Signing Tools-x86_en-us.msi"它只有400 KB。

然后我创建了这个小脚本文件:

prompt $
echo off
cls


copy "my.exe" "my.bak.exe"


"c:\Program Files (x86)\Windows Kits\10\bin\10.0.22000.0\x64\signtool.exe" sign /fd SHA256 /f MyCertificate.pfx /p MyPassword My.exe


pause

__

签署EXE文件后发生了什么?

所以,在投资了一些钱之后,我终于签署了我的EXE文件。之后发生了什么?没有什么……在Win10上,我仍然看到同样的“不受信任”。窗口的“不要跑”;按钮。“Continue"按钮仍然是隐形的。我的程序每天大约有400次下载。让我们拭目以待到底需要多少下载量。