分享免费的编程资源和教程

网站首页 > 技术教程 正文

使用 SignTool 对 Windows 应用程序进行代码签名

goqiw 2025-02-11 11:53:34 技术教程 105 ℃ 0 评论

之前打包Windows安装程序,都是鹅厂干的,代码签名已经做好了。现在鹅厂只负责打包,不进行代码签名。所以,代码签名的工作,就得小弟们干了,这里记录下签名过程,备忘。

如果程序没有代码签名,Windows10系统上安装的时候,会有如下弹窗,非常影响用户体验。所以,很有必要进行代码签名。

一、准备工作

  • 应用包:no_sign_win64.exe
  • 有效的签名证书:my.pfx
  • SignTool.exe

SignTool 是一种命令行工具,可对文件进行数字签名、验证文件中的签名和时间戳、删除签名等。

根据 SDK 的安装路径,以下是 SignTool 在 Windows 10 电脑上的位置:

x86:C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x86\signtool.exe

x64:C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x64\signtool.exe

二、确定哈希算法

使用 SignTool 对应用程序进行签名时,SignTool 中所用的哈希算法必须与你用于打包应用的算法相同。现在创建应用包,一般使用 SHA256,则在使用 SignTool 时必须指定 SHA256。

SignTool 的默认算法是 SHA1,所以在使用 SignTool 时必须始终指定哈希算法。

三、使用 SignTool 对文件进行签名

语法:

SignTool sign /fd  /a /f .pfx /p  .appx
SignTool sign /fd  /a /f .pfx /p  .msix
SignTool sign /fd  /a /f .pfx /p  .exe

举例:

使用 PFX(个人信息Exchange)证书对文件进行签名:

SignTool sign /f MyCert.pfx MyApp.exe

使用加密的 PFX 证书对文件进行签名:

SignTool sign /f MyCert.pfx /p MyPassword MyApp.exe

对文件进行签名和时间戳:

SignTool sign /f MyCert.pfx /t http://timestamp.digicert.com MyApp.exe

实例:

.\signtool.exe sign /fd sha256 /a /f my.pfx /p "my.pfx.password" /t http://timestamp.digicert.com no_sign_win64.exe

结果:

验证:

右键单击 no_sign_win64.exe 文件,查看属性,可以看到多出了“数字签名”页签,说明签名成功了。

四、其他

附:

Microsoft 加密工具

文件名

备注

Cert2SPC.exe

仅出于测试目的,创建软件Publisher证书 (SPC) 。

CertMgr.exe

管理证书、CCL 和 证书吊销列表 , (CCL) 。

MakeCat.exe

创建一个未签名的目录文件,其中包含一组文件的哈希以及每个文件的关联属性。

MakeCert.exe

仅创建 X.509 证书以进行测试。

Pvk2pfx.exe

将软件发布者证书文件 (.spc) 或私钥文件 (.pvk) 转换为个人信息Exchange (PFX) 文件格式。

SetReg.exe

设置用于控制证书验证的注册表项。

SignTool.exe

对文件进行签名和时间戳。 此外,检查文件的签名。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表