
如果您要开发或发布 Windows 软件,了解如何签署 EXE 文件可确保您的应用程序值得信赖,并且不会出现安全警告。代码签名可验证可执行文件的真实性和完整性,向用户保证软件来源合法,未被篡改。如果没有有效的数字签名,Windows 可能会阻止应用程序或显示安全警告,从而难以获得用户的信任。
本文介绍了如何签署可执行文件,包括从要求和分步说明到验证以及签署 EXE 文件的好处等各个方面。
本指南结束时,你将知道如何获取和安装代码签名证书,使用Microsoft 的signtool.exe来签名EXE文件,以及验证可执行文件是否已正确签名。让我们开始吧。
签署 EXE 或应用程序前的要求
在签署EXE文件之前,您必须拥有正确的工具和设置。代码签名不仅仅是应用数字签名。它需要有效的证书、安全的密钥存储和适当的签名软件。下面,我们将逐步介绍关键要求,包括从选择正确的证书到设置必要的软件等各个方面。
1.获取代码签名证书
首先,您需要一个由可信的证书颁发机构(CA)颁发的代码签名证书,如 DigiCert 或 Sectigo.该证书可验证您作为软件发布者的身份。
自 2023 年 6 月 1 日起,所有代码签名证书都必须将私钥存储在安全的硬件上。因此,您不能在本地计算机上生成或保存私钥。相反,它必须存储在经 FIPS 140-2 Level 2+ 批准的设备上,如SafeNet USB 令牌 或硬件安全模块 (HSM)。
您选择的证书类型会影响您处理密钥存储的方式:
- EV 代码签名证书总是附带一个由 CA签发的SafeNetUSB 令牌。这个物理设备保存着你的私人密钥,每次签署 EXE 文件时都需要它。
- 标准代码签名证书不包括 USB 令牌。相反,你可以使用基于云的签名服务(如DigiCert 的 KeyLocker),或者在 CA 允许的情况下将私钥存储在自己的HSM上。
2.设置签名环境
获得证书和安全存储设备后,您需要合适的工具。 Windows SDK(软件开发工具包)包括必要的签名实用程序signtool.exe,你将用它来应用数字签名。如果尚未安装,可从微软官方网站下载最新版本。

如果使用 EV 代码签名证书,还需要安装SafeNet Authentication Client 软件。这样,系统就能与 USB 令牌通信,并安全地检索私钥。如果您使用 HSM 签名,请确保设备已正确设置,并且您的证书可从签名环境中访问。

您还必须在计算机上拥有管理员权限。代码签名需要提升权限,因此在执行任何签名命令前,请以管理员身份运行命令提示符或PowerShell。
3.时间戳为何重要
签名过程的一个关键部分是时间戳,它能确保数字签名在证书过期后仍然有效。如果没有时间戳,一旦证书过期,Windows 就会将已签名的 EXE 视为不可信任的。
签署文件时,签署工具会联系时间戳服务器,记录签署的确切日期和时间。这证明你的文件是在证书仍然有效的情况下签署的。大多数 CA 都免费提供时间戳服务。如果不添加时间戳,用户就会看到签名过期的警告,使应用程序显得不安全。
4.签署前的最后准备工作
在签署 EXE 之前,请仔细检查签署工具、驱动程序和安全存储设备是否设置正确。如果使用 HSM,请检查密钥是否可访问并正确配置。如果使用的是 SafeNet USB 令牌,请确保其已插入且 SafeNet 身份验证客户端正在运行。
一切就绪后,您就可以签署 EXE 文件了。这个过程最初可能看起来很复杂,但按照这些步骤操作,可以确保您的软件受到 Windows 的信任,防止出现安全警告,并让用户放心安装应用程序。
签署 EXE 文件分步指南
下面是关于签署 EXE 的最新详细指南,现在必须将 EXE 存储在硬件安全模块(HSM)或 USB 令牌中,以增强安全性。
步骤 1:插入 HSM 或 USB 令牌
在签署 EXE 之前,必须连接包含代码签名证书和私钥的硬件令牌或 HSM。认证机构现在要求所有代码签名证书都存储在经 FIPS 140-2 Level 2 批准的设备上,如 SafeNet USB 令牌或YubiKey HSM。
连接硬件令牌的步骤:
- 将 HSM 或 USB 令牌插入Windows 机器。
- 如果出现提示,请安装必要的驱动程序(大多数设备会自动安装)。
- 确保已安装SafeNet Authentication Client或任何所需的 HSM 软件。
如果使用基于云的 HSM(如Azure Key Vault 或 AWS CloudHSM),请确保在继续之前正确设置了凭据。
第 2 步:以管理员身份打开命令提示符
由于签名需要系统权限,因此必须使用具有管理权限的Command Prompt (cmd.exe)或PowerShell。
以管理员身份打开命令提示符的步骤:
- 单击 “开始 “菜单并输入cmd。
- 右键单击 “命令提示符“,选择 “以管理员身份运行“。
或者,如果您更喜欢PowerShell,也可以按照相同的步骤输入PowerShell。
步骤 3:找到 SignTool
SignTool是Windows SDK 中包含的微软工具,是签署可执行文件所必需的。
在系统中查找 SignTool:
SignTool 的位置取决于所安装的Windows SDK版本。您可以在以下位置找到它:
C:/Program Files (x86)/Windows
Kits\10\bin\10.0.22621.0\x64\signtool.exe
如有需要,请将10.0.22621.0替换为已安装的 SDK 版本。

第 4 步:使用 SignTool 签名 EXE
一切准备就绪后,就可以使用SignTool 签名 EXE 文件了。下面是使用时间戳签名的正确命令示例。 请相应调整。
signtool sign /tr http://timestamp.digicert.com /td SHA256 /fd SHA256 /a "C:\path\to\yourfile.exe"
命令解释:
- /tr http://timestamp.digicert.com– 指定 RFC 3161 时间戳服务器 URL(用 CA 服务器替换)。
- /td SHA256– 将 SHA-256 设置为时间戳摘要算法。
- /fd SHA256– 将 SHA-256 指定为文件摘要算法(现代 Windows 版本要求使用此算法)。
- /a– 自动选择正确的代码签名证书。
- “C:\path\to\yourfile.exe”– 替换为 EXE 文件的实际路径。
步骤 5:输入密码(如需要)
如果 HSM 或 USB 令牌要求进行身份验证,则会出现一个弹出窗口,要求输入密码或 PIN 码。
下一步该怎么做
- 输入 SafeNet 令牌(或任何其他 HSM)的密码。
- 如果您有多个证书,SignTool 可能会要求您选择正确的证书。
注意:如果使用基于云的 HSM,可能需要通过 API 凭据或安全 PIN 进行身份验证。
验证已签名的 EXE 文件
签署 EXE 后,请确认签名已正确应用并包含时间戳。以下是验证方法:
1.检查文件属性
- 在计算机上找到已签名的 EXE 文件。
- 右键单击文件并选择属性。
- 转到数字签名选项卡。
- 如果签名成功,你会看到签名和时间戳。单击 “详细信息 “确认信息中是否写有 “此数字签名OK”。
2.使用 Poweshell 进行验证
要进行更深入的检查,可以使用 Windows Powershell。
- 打开PowerShell(Win + X → PowerShell)。
- 运行命令:
Get-AuthenticodeSignature "C:\Windows\System32\cmd.exe"
用你的 exe 文件替换 “cmd/exe”。
这将显示签名的详细信息,包括证书链和时间戳。如果签名无效或缺失,Windows 会将其标记出来。
3.在另一个系统上测试
为进一步确保安全,请尝试在另一台计算机上下载并运行已签名的 EXE。如果一切正常,Windows 应该会将其识别为受信任的应用程序,而不会显示安全警告。通过这些步骤,您可以确保您的 EXE 已正确签名,并可安全分发。
为什么要签署 EXE 文件?
Windows 应用程序签名不仅关系到安全性,还关系到信任、保护和确保软件顺利运行。以下是签署可执行文件的几个理由:
- 用户信任签名软件。如果 EXE 文件没有签名,Windows 就会发出安全警告,有些系统可能会完全阻止它。来自可信证书颁发机构的经过验证的签名可以让用户放心,文件是安全的,没有被篡改过。
- 它可以防止未经授权的修改。一旦签名,EXE 就像一个密封包装。如果有人试图修改它,无论是注入恶意软件还是修改代码,都会破坏签名,Windows 就会将文件标记为不可信任。
- 它能减少 Microsoft SmartScreen 警告。SmartScreen 会对未签名的软件咄咄逼人,它会显示警告,让用户在安装时犹豫不决。对 EXE 进行签名,尤其是使用扩展验证 (EV) 代码签名证书,可大大减少这些警告,使安装更加顺利。
- 它对企业分发至关重要。许多企业环境禁止未签名的软件在其网络上运行。经过签名的 EXE 符合安全策略,可确保顺利部署。
- 时间戳使签名保持有效。如果没有时间戳,签名就会在证书过期时失效。有了时间戳,即使过期,签名也会保持有效,确保软件继续运行。
自信地签署您的 EXE – 获取代码签名证书
知道如何签署 EXE 文件并保护软件免受安全警告后,下一步就是获得适当的代码签名证书。无论您是独立开发人员还是企业,签署 EXE 都能确保信任、顺利安装和防止篡改。如果没有有效的签名,Windows 将标记您的软件,使用户难以安装和运行。
在 SSL Dragon,我们提供来自DigiCert、Sectigo 和GoGetSSL 等顶级供应商的OV 和 EV 代码签名证书。需要简单的解决方案?选择个人或组织验证。想要更高的信誉和更少的 SmartScreen 警告?扩展验证是不错的选择。任君选择,自信地签署您的软件,让安全警告成为过去。
