Windows环境中,为自己的应用添加发行者证书

Windows环境中,为自己的应用添加发行者证书

在 Windows 上,如果你运行一个自定义构建的 Go 应用,Windows SmartScreen 或 UAC 可能会显示“发行者为未知”,这是因为你的应用没有经过代码签名认证。为了让 Windows 识别你的发行者信息,你需要给应用添加代码签名(Code Signing Certificate)


如何为 Go 应用添加发行者信息(代码签名)

步骤 1:获取代码签名证书

你需要一个 代码签名证书 来给你的应用签名。这些证书由可信证书颁发机构(CA)提供,如:

  • DigiCert
  • Sectigo (Comodo)
  • GlobalSign
  • Let's Encrypt(免费 TLS 证书,但代码签名证书需要商业购买)

如果只是测试使用,你也可以生成一个自签名证书(详见下方步骤),但这不会被 Windows 视为可信任发行者。


步骤 2:生成自签名证书(测试用)

如果只是本地测试或学习目的,可以生成自签名证书:

  1. 打开 PowerShell(管理员权限)。

  2. 运行以下命令创建一个自签名证书:

    $cert = New-SelfSignedCertificate -Type CodeSigningCert -Subject "CN=MyCompany" -CertStoreLocation "Cert:\CurrentUser\My"
    
  3. 导出证书为 .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 中的工具,用于给可执行文件和安装包签名。

  1. 安装 Windows SDK下载地址)。
  2. 在终端中确保 signtool 可用:
    signtool
    
    如果显示帮助信息,则说明安装成功。

步骤 4:给可执行文件签名

  1. 构建你的 Go 可执行文件:

    go build -o myapp.exe main.go
    
  2. 使用 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:要签名的可执行文件。
  3. 验证签名是否成功:

    signtool verify /pa myapp.exe
    

步骤 5:检查签名和发行者信息

  1. 右键点击已签名的 myapp.exe
  2. 选择 属性 > 数字签名
  3. 确认签名是否成功,发行者是否显示为你指定的名称(如 CN=MyCompany)。

步骤 6:发布和避免未知发行者提示

  • 发布前测试:确保在不同的 Windows 设备上测试你的应用签名,检查是否显示发行者信息。
  • 购买可信证书:自签名证书只能用于本地测试。如果要避免 Windows 警告,必须从可信的证书颁发机构(CA)购买代码签名证书。

总结

通过给你的 Go 应用添加代码签名证书,Windows 系统就能识别你的应用的发行者信息,避免“未知发行者”的提示。你可以使用 自签名证书来测试,但在生产环境下,需要购买可信证书来确保你的用户不会看到安全警告。

posted @ 2024-10-20 23:40  Gold_stein  阅读(38)  评论(0编辑  收藏  举报