如果你是软件开发者或分发者,维护软件或可执行文件的安全与可信至关重要,这能让用户在下载使用时感到安心。用数字证书为可执行文件签名,是确保软件对终端用户安全的最重要步骤之一。没有数字证书,你的应用可能被 Windows 或杀毒软件标记为不安全,给用户带来困扰。
对许多开发者而言,签名文件(尤其使用工具)的过程可能显得困难复杂。本指南逐步演示如何顺畅地使用 Microsoft SignTool 为可执行文件签名。
关于 Microsoft SignTool 及其 EXE 签名用法
Microsoft SignTool 是开发者用于数字签名文件、验证签名与时间戳签名文件的强大命令行工具。数字签名需要时间戳,以便在证书过期后保持有效。要成功签名文件,你需要从受信任 CA 购买的代码签名证书、一台 Windows 设备,以及你要签名的文件或可执行文件。
SignTool 默认包含在 Windows SDK 中,位于 "C:\Program Files (x86)\Windows Kits\10\bin" 下的 Bin 文件夹。若未找到,可从 Microsoft 官网下载。使用 Visual Studio 开发时,它已作为 Visual Studio 安装的一部分存在,可通过 工具 > 命令行 > 开发者命令提示符 访问。
用 SignTool 数字签名可执行文件的完整步骤
步骤 1:打开命令提示符执行 SignTool 命令。步骤 2:以管理员权限登录——右键命令提示符图标选择"以管理员身份运行",确认 UAC 提示。步骤 3:访问 SignTool 目录("C:\Program Files (x86)\Windows Kits\10\bin\<架构>\signtool.exe"),用 cd 命令导航。
步骤 4:用 OV 与 EV 代码签名证书签名可执行文件
OV(组织验证)与 EV(扩展验证)证书是提供不同验证级别的代码签名证书。使用以下命令签名:
signtool sign /fd SHA256 /tr http://timestamp-server.com /td SHA256 /f <CertificateFile.pfx> <FileToSign.exe>
将 "http://timestamp-server.com" 改为你的 CA 时间戳服务器 URL。参数说明:/fd SHA256 指定哈希算法;/tr 为 RFC3161 合规时间戳服务器 URL;/td SHA256 设置时间戳服务器的哈希算法;/f 为证书文件(.pfx)路径;<FileToSign.exe> 为可执行文件路径。示例:
signtool sign /fd SHA256 /tr http://timestamp.digicert.com /td SHA256 /f "C:\Certificates\MyCert.pfx" "C:\Apps\MyApp.exe"
步骤 5:签名验证
signtool verify /pa /v <FileToVerify.exe>
参数:/pa 使用默认认证策略验证;/v 显示详细验证输出。示例:
signtool verify /pa /v "C:\Apps\MyApp.exe"
结语
Microsoft SignTool 实用工具让用户能够执行直接明了的签名流程,保护文件分发安全。数字签名对各类规模的开发者都必不可少,可防范软件被篡改并与受众建立信誉。你可依据上述指南,使用组织验证或扩展验证证书自信地为文件签名,同时进行身份验证以消除用户体验中的安全告警。