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 系統就能識別你的應用的發行者資訊,避免“未知發行者”的提示。你可以使用 自簽名證書來測試,但在生產環境下,需要購買可信證書來確保你的使用者不會看到安全警告。