签署Windows EXE文件

Las*_*sar 157 windows exe sign certificate

我有一个EXE文件,我想签名,以便Windows不会警告最终用户有关"未知发布者"的应用程序.我不是Windows开发人员.有问题的应用程序是从生成屏幕保护程序应用程序的应用程序生成的屏幕保护程序.因此,我对文件的生成方式没有影响.

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

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

另请注明哪种证书类型是正确的.大多数网站只提到"代码签名",并谈论签署用户实际编译的应用程序.对我来说情况并非如此.

Mel*_*een 107

您可以尝试使用Microsoft的Sign Tool

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

signtool sign/a MyFile.exe

这标志着一个可执行文件.我不确定它使用什么证书.

或者您可以尝试:

signtool signwizard

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


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

证书创建工具(Makecert.exe)

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

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

  • "此工具随Visual Studio自动安装.要运行该工具,请使用开发人员命令提示符(或Windows 7中的Visual Studio命令提示符)." http://msdn.microsoft.com/en-us/library/8s9b9yaz(v=vs.110).aspx (4认同)
  • 单独问题中的工作流程:http://stackoverflow.com/questions/84847/how-do-i-create-a-self-signed-certificate-for-code-signing-on-windows (2认同)
  • Windows SDK 7.0 后“signwizard”选项不可用 (2认同)
  • Makecert 已被弃用,应使用 PowerShell cmdlet New-SelfSignedCertificate 来创建测试证书。详细信息请参见 /sf/answers/3601035651/(回答 The_Ghost 链接的问题)。 (2认同)

Lee*_*son 27

如果您正在进行开源开发,可以从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
Run Code Online (Sandbox Code Playgroud)

  • 它不再是免费的,价格便宜得多,14欧元 (3认同)
  • Certum 商店表示,他们的开源证书不会删除 Microsoft SmartScreen Filter 消息。 (3认同)
  • 那现在是25.00欧元吗?(https://en.sklep.certum.pl/data-safety/code-signing-certificates/open-source-code-signing-998.html) (2认同)

Eri*_*llo 24

我的工作中有同样的情况,这是我们的发现

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

以下是2个选项的优缺点

买证书

  • 优点
    • 使用CA(证书颁发机构)颁发的证书将确保Windows不会使用来自CA的证书在任何计算机上警告最终用户来自"未知发布者"的应用程序(OS通常附带来自manny CA的根证书) )
  • 缺点:
    • 从CA获取证书涉及成本

使用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符号/ TR http://timestamp.digicert.com/TD SHA256/FD SHA256/F "C:\路径\到\ mycert.pfx"/ P pfxpassword "C:\路径\到\的file.exe"

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

测试你的签名

方法1:使用signtool

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

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

方法2:使用Windows

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

我希望这可以帮到你

资料来源:


And*_*eas 17

ASP的杂志ASPects详细描述了如何签署代码(你必须成为阅读文章的成员).您可以通过http://www.asp-shareware.org/下载

这里是描述如何制作自己的测试证书的链接.

也可能很有趣.

  • Comodo在2013年中期仍然是一个风险赌注,并且"用户代理",这是否意味着微软/ Windows肯定是他们决定是否展示臭名昭着的"未知出版商"的消息. (8认同)
  • 四年后的补遗:Comodo在2012年初的某个时候受到了损害(http://blogs.comodo.com/it-security/data-security/the-recent-ra-compromise/),因此许多用户代理现在都拒绝了Comodo根权威 (7认同)

moz*_*zey 10

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


kyc*_*109 10

参考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


WeG*_*ars 10

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

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

1 年 379 欧元
en.sklep.certum.pl
(似乎仅适用于波兰用户)

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

1 年 364 欧元+19%VAT
(OV 69+VAT)
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 年:贵得离谱
[symantec.com]

更多价格在这里:
cheapsslsecurity.com CodeSigning EV
仅限 SSL!



use*_*962 6

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

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

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

为我工作:)


Sta*_*rds 5

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

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