Windows环境中,为自己的应用添加发行者证书
在 Windows 上,如果你运行一个自定义构建的 Go 应用,Windows SmartScreen 或 UAC 可能会显示“发行者为未知”,这是因为你的应用没有经过代码签名认证。为了让 Windows 识别你的发行者信息,你需要给应用添加代码签名(Code Signing Certificate)。
如何为 Go 应用添加发行者信息(代码签名)
步骤 1:获取代码签名证书
你需要一个 代码签名证书 来给你的应用签名。这些证书由可信证书颁发机构(CA)提供,如:
- DigiCert
- Sectigo (Comodo)
- GlobalSign
- Let's Encrypt(免费 TLS 证书,但代码签名证书需要商业购买)
如果只是测试使用,你也可以生成一个自签名证书(详见下方步骤),但这不会被 Windows 视为可信任发行者。
步骤 2:生成自签名证书(测试用)
如果只是本地测试或学习目的,可以生成自签名证书:
-
打开 PowerShell(管理员权限)。
-
运行以下命令创建一个自签名证书:
$cert = New-SelfSignedCertificate -Type CodeSigningCert -Subject "CN=MyCompany" -CertStoreLocation "Cert:\CurrentUser\My"
-
导出证书为
.pfx
文件(包括私钥):Export-PfxCertificate -Cert "Cert:\CurrentUser\My\$($cert.Thumbprint)" -FilePath "C:\path\to\mycert.pfx" -Password (ConvertTo-SecureString -String "your-password" -Force -AsPlainText)
这会生成一个自签名的 .pfx
文件,稍后会用来签名你的可执行文件。
步骤 3:安装 signtool
工具
signtool
是 Windows SDK 中的工具,用于给可执行文件和安装包签名。
- 安装 Windows SDK(下载地址)。
- 在终端中确保
signtool
可用:
如果显示帮助信息,则说明安装成功。signtool
步骤 4:给可执行文件签名
-
构建你的 Go 可执行文件:
go build -o myapp.exe main.go
-
使用
signtool
给应用签名:signtool sign /f C:\path\to\mycert.pfx /p your-password /tr http://timestamp.digicert.com /td sha256 /fd sha256 myapp.exe
/f
:证书文件路径(.pfx
)。/p
:证书文件密码。/tr
:时间戳服务器(避免签名过期)。/td
和/fd
:使用 SHA-256 算法。myapp.exe
:要签名的可执行文件。
-
验证签名是否成功:
signtool verify /pa myapp.exe
步骤 5:检查签名和发行者信息
- 右键点击已签名的
myapp.exe
。 - 选择 属性 > 数字签名。
- 确认签名是否成功,发行者是否显示为你指定的名称(如
CN=MyCompany
)。
步骤 6:发布和避免未知发行者提示
- 发布前测试:确保在不同的 Windows 设备上测试你的应用签名,检查是否显示发行者信息。
- 购买可信证书:自签名证书只能用于本地测试。如果要避免 Windows 警告,必须从可信的证书颁发机构(CA)购买代码签名证书。
总结
通过给你的 Go 应用添加代码签名证书,Windows 系统就能识别你的应用的发行者信息,避免“未知发行者”的提示。你可以使用 自签名证书来测试,但在生产环境下,需要购买可信证书来确保你的用户不会看到安全警告。
标签:证书,Windows,签名,应用,signtool,发行者 From: https://www.cnblogs.com/smartljy/p/18488178