Appearance
验证签名与时间戳
对最终准备分发的 EXE 或 DLL 进行检查,确认它由预期发布者签名且没有在签名后被修改。
在 Windows 中检查
右键文件,打开 属性 → 数字签名,选择签名并查看详细信息。核对签名者组织名称、证书信息,以及时间戳相关信息。
没有“数字签名”页时,先确认检查的是最终签名文件,而不是未签名的原始副本。
使用 SignTool 检查
安装 Windows SDK 后,在可以调用 signtool.exe 的 PowerShell 中运行。将路径替换为您的文件:
powershell
$ErrorActionPreference = 'Stop'
signtool.exe verify /pa /all /v /tw "C:\release\your-app.exe"
if ($LASTEXITCODE -ne 0) {
throw "签名验证失败或存在警告,请检查上方输出。"
}/pa 使用应用程序的 Authenticode 验证策略;/all 检查全部签名;/v 展示详细结果;/tw 在缺少时间戳时给出警告。这里将警告也视为需要处理的结果。
检查输出中的发布者和证书,确认与预期一致。验签通过只说明该签名满足验证条件,不代替核对签名身份。
自动化检查发布者
PowerShell 可进一步读取文件签名信息:
powershell
$signature = Get-AuthenticodeSignature -LiteralPath "C:\release\your-app.exe"
$signature | Select-Object Status, StatusMessage
$signature.SignerCertificate | Select-Object Subject, Thumbprint
$signature.TimeStamperCertificate | Select-Object Subject, NotAfter应看到 Status 为 Valid、预期的签名证书,以及时间戳证书信息。证书指纹用于与您的签名证书核对。完整自动化检查见 命令行签名。
结果不符合预期
| 现象 | 下一步 |
|---|---|
| 文件未签名 | 检查签名任务和输出文件路径 |
| 发布者不正确 | 核对规则选择的证书或命令行中的证书指纹 |
| 文件摘要不匹配 | 重新构建,并在最后一次修改后重新签名 |
| 没有时间戳 | 检查时间戳配置与网络,重新完成签名及验签 |
| 不受信任或吊销检查失败 | 查看详细错误,检查验证机信任链、系统时间和网络 |
| 签名有效但仍有 SmartScreen 提示 | 阅读 SmartScreen 说明 |
本页检查应用程序签名;驱动程序应按对应发布流程验证。更多问题见 常见问题与排查。
