Windows 代碼簽署
在 Windows 上,代碼簽署是必要的,以便讓您的應用程式能列在 Microsoft Store 中,並防止從瀏覽器下載時出現 SmartScreen 警告,指出您的應用程式不受信任且無法啟動。
在 Windows 上執行您的應用程式並非必要進行代碼簽署,只要您的最終使用者可以接受忽略 SmartScreen 警告,或者您的使用者不是透過瀏覽器下載即可。本指南涵蓋透過 OV(組織驗證)憑證和 Azure Key Vault 進行簽署。如果您使用此處未記錄的其他簽署機制,例如 EV(擴展驗證)憑證,請查閱您的憑證發行者文件,並參考自訂簽署命令章節。
OV 憑證
先決條件
- Windows - 您可能可以使用其他平台,但本教學課程使用 PowerShell 原生功能。
- 一個可運作的 Tauri 應用程式
- 代碼簽署憑證 - 您可以在 Microsoft 文件中列出的服務上取得這些憑證之一。可能還有比該列表中包含的非 EV 憑證更多的授權單位,請自行比較並自行承擔風險選擇一個。
- 請務必取得 代碼簽署 憑證,SSL 憑證不適用!
開始使用
為了讓 Windows 準備好進行代碼簽署,我們需要做一些事情。這包括將我們的憑證轉換為特定格式、安裝此憑證,以及從憑證中解碼必要的資訊。
-
將您的
.cer
轉換為.pfx
-
您將需要以下項目
- 憑證檔案(我的檔案是
cert.cer
) - 私密金鑰檔案(我的檔案是
private-key.key
)
- 憑證檔案(我的檔案是
-
開啟命令提示字元,並使用
cd Documents/Certs
切換到您目前的目錄 -
使用
openssl pkcs12 -export -in cert.cer -inkey private-key.key -out certificate.pfx
將您的.cer
轉換為.pfx
-
系統應提示您輸入匯出密碼, 請務必記住!
-
-
將您的
.pfx
檔案匯入金鑰儲存區。-
我們現在需要匯入我們的
.pfx
檔案。 -
使用
$WINDOWS_PFX_PASSWORD = 'MYPASSWORD'
將您的匯出密碼指派給變數 -
現在使用
Import-PfxCertificate -FilePath certificate.pfx -CertStoreLocation Cert:\CurrentUser\My -Password (ConvertTo-SecureString -String $WINDOWS_PFX_PASSWORD -Force -AsPlainText)
匯入憑證
-
-
準備變數
-
開始 ➡️
certmgr.msc
以開啟個人憑證管理,然後開啟「個人/憑證」。 -
找到我們剛剛匯入的憑證並按兩下,然後按一下「詳細資料」索引標籤。
-
簽章雜湊演算法將會是我們的
digestAlgorithm
。(提示:這很可能是sha256
) -
向下捲動到「指紋」。應該會有一個像
A1B1A2B2A3B3A4B4A5B5A6B6A7B7A8B8A9B9A0B0
的值。這是我們的certificateThumbprint
。 -
我們還需要時間戳記 URL;這是一個時間伺服器,用於驗證憑證簽署的時間。我使用的是
http://timestamp.comodoca.com
,但無論您從誰那裡取得憑證,他們可能也有一個。
-
準備 tauri.conf.json
檔案
-
現在我們有了
certificateThumbprint
、digestAlgorithm
和timestampUrl
,我們將開啟tauri.conf.json
。 -
在
tauri.conf.json
中,您將尋找tauri
->bundle
->windows
區段。我們捕獲的資訊有三個變數。如下所示填寫。
"windows": { "certificateThumbprint": "A1B1A2B2A3B3A4B4A5B5A6B6A7B7A8B8A9B9A0B0", "digestAlgorithm": "sha256", "timestampUrl": "http://timestamp.comodoca.com"}
-
儲存並執行
tauri build
-
在主控台輸出中,您應該會看到以下輸出。
info: signing appinfo: running signtool "C:\\Program Files (x86)\\Windows Kits\\10\\bin\\10.0.19041.0\\x64\\signtool.exe"info: "Done Adding Additional Store\r\nSuccessfully signed: APPLICATION FILE PATH HERE
這表示您已成功簽署 .exe
。
就是這樣!您已成功設定您的 Tauri 應用程式以進行 Windows 簽署。
使用 GitHub Actions 簽署您的應用程式。
我們也可以建立工作流程,以使用 GitHub Actions 簽署應用程式。
GitHub Secrets
我們需要新增一些 GitHub secrets,以正確設定 GitHub Action。這些可以隨您喜好命名。
- 您可以檢視 加密 secrets 指南,了解如何新增 GitHub secrets。
我們使用的 secrets 如下
GitHub Secrets | 變數的值 |
---|---|
WINDOWS_CERTIFICATE | 您的 .pfx 憑證的 Base64 編碼版本,可以使用此命令完成:certutil -encode certificate.pfx base64cert.txt |
WINDOWS_CERTIFICATE_PASSWORD | 憑證匯出密碼,用於建立憑證 .pfx |
工作流程修改
-
我們需要在工作流程中新增一個步驟,將憑證匯入 Windows 環境。此工作流程完成以下操作
- 將 GitHub secrets 指派給環境變數
- 建立新的
certificate
目錄 - 將
WINDOWS_CERTIFICATE
匯入 tempCert.txt - 使用
certutil
將 tempCert.txt 從 base64 解碼為.pfx
檔案。 - 移除 tempCert.txt
- 將
.pfx
檔案匯入 Windows 的憑證儲存區,並將WINDOWS_CERTIFICATE_PASSWORD
轉換為安全字串,以在匯入命令中使用。
-
我們將使用
tauri-action
發佈範本。
name: 'publish'on: push: branches: - release
jobs: publish-tauri: strategy: fail-fast: false matrix: platform: [macos-latest, ubuntu-latest, windows-latest]
runs-on: ${{ matrix.platform }} steps: - uses: actions/checkout@v2 - name: setup node uses: actions/setup-node@v1 with: node-version: 12 - name: install Rust stable uses: actions-rs/toolchain@v1 with: toolchain: stable - name: install webkit2gtk (ubuntu only) if: matrix.platform == 'ubuntu-latest' run: | sudo apt-get update sudo apt-get install -y webkit2gtk-4.0 - name: install app dependencies and build it run: yarn && yarn build - uses: tauri-apps/tauri-action@v0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tagName: app-v__VERSION__ # the action automatically replaces \_\_VERSION\_\_ with the app version releaseName: 'App v__VERSION__' releaseBody: 'See the assets to download this version and install.' releaseDraft: true prerelease: false
- 在
-name: install app dependencies and build it
正上方,您會想要新增以下步驟
- name: import windows certificate if: matrix.platform == 'windows-latest' env: WINDOWS_CERTIFICATE: ${{ secrets.WINDOWS_CERTIFICATE }} WINDOWS_CERTIFICATE_PASSWORD: ${{ secrets.WINDOWS_CERTIFICATE_PASSWORD }} run: | New-Item -ItemType directory -Path certificate Set-Content -Path certificate/tempCert.txt -Value $env:WINDOWS_CERTIFICATE certutil -decode certificate/tempCert.txt certificate/certificate.pfx Remove-Item -path certificate -include tempCert.txt Import-PfxCertificate -FilePath certificate/certificate.pfx -CertStoreLocation Cert:\CurrentUser\My -Password (ConvertTo-SecureString -String $env:WINDOWS_CERTIFICATE_PASSWORD -Force -AsPlainText)
-
儲存並推送至您的 repo。
-
您的工作流程現在可以匯入您的 Windows 憑證並將其匯入 GitHub runner,從而實現自動代碼簽署!
Azure Key Vault
您可以透過提供 Azure Key Vault 憑證和憑證來簽署 Windows 可執行檔。
- Key Vault
在 Azure Portal 中,導覽至 Key vaults 服務,然後按一下「建立」按鈕來建立新的金鑰儲存區。請記住「金鑰儲存區名稱」,因為您將需要該資訊來設定憑證 URL。
- 憑證
建立金鑰儲存區後,選取它並前往「物件 > 憑證」頁面以建立新憑證,然後按一下「產生/匯入」按鈕。請記住「憑證名稱」,因為您將需要該資訊來設定憑證 URL。
- Tauri 設定
relic 使用設定檔來判斷應使用哪個簽署金鑰。對於 Azure Key Vault,您也需要憑證 URL。在 src-tauri
資料夾中建立 relic.conf
檔案,並設定 relic 以使用您的憑證
tokens: azure: type: azure
keys: azure: token: azure id: https://\<KEY_VAULT_NAME\>.vault.azure.net/certificates/\<CERTIFICATE_NAME\>
請注意,您必須將 <KEY_VAULT_NAME> 和 <CERTIFICATE_NAME> 替換為先前步驟中的適當名稱。
若要設定 Tauri 以使用您的 Azure Key Vault 設定進行簽署,請變更 bundle > windows > signCommand 設定值
{ "bundle": { "windows": { "signCommand": "relic sign --file %1 --key azure --config relic.conf" } }}
- 憑證
relic 必須使用 Azure 進行驗證才能載入憑證。在 Azure portal 登陸頁面中,前往「Microsoft Entra ID」服務,然後前往「管理 > 應用程式註冊」頁面。按一下「新增註冊」以建立新的應用程式。建立應用程式後,您會重新導向至應用程式詳細資料頁面,您可以在其中看到「應用程式 (用戶端) 識別碼」和「目錄 (租用戶) 識別碼」值。將這些識別碼分別設定為 AZURE_CLIENT_ID
和 AZURE_TENANT_ID
環境變數。
在「管理 > 憑證 & secrets」頁面中,按一下「新增用戶端密碼」按鈕,並將「值」欄中的文字設定為 AZURE_CLIENT_SECRET
環境變數。
設定完所有憑證後,返回您的金鑰儲存區頁面,並導覽至「存取控制 (IAM)」頁面。您必須將「金鑰儲存區憑證使用者」和「金鑰儲存區密碼編譯使用者」角色指派給您新建立的應用程式。
設定完所有這些變數後,執行 tauri build
將會產生已簽署的 Windows 安裝程式!
自訂簽署命令
在上面的 Azure Key Vault 文件中,我們使用了強大的 Tauri Windows 簽署設定,以強制 Tauri CLI 使用特殊的 shell 命令來簽署 Windows 安裝程式可執行檔。bundle > windows > signCommand 設定選項可用於使用任何可以簽署 Windows 可執行檔的代碼簽署工具。
Azure 代碼簽署
您可以透過提供 Azure Code signing 憑證和憑證來簽署 Windows 可執行檔。如果您還沒有 Azure Code signing 帳戶,您可以按照此教學課程進行操作。
先決條件
如果您想使用 Github Actions 進行簽署,則應安裝所有項目。
- Trusted Signing Account 和已設定的權限
- .NET(建議使用 .NET 6 或更新版本)
- Azure CLI
- Signtool(建議使用 Windows 11 SDK 10.0.22000.0 或更新版本)
開始使用
您需要安裝 trusted-signing-cli 並設定您的環境變數。
-
安裝 trusted-signing-cli
cargo install trusted-signing-cli
-
設定環境變數
-
修改您的
tauri.conf.json
檔案-
您可以修改您的
tauri.conf.json
,也可以為 Windows 建立特定的設定檔。將 URL 和憑證名稱替換為您自己的值。- -e:您的 Azure Code Signing 帳戶的端點
- -a:您的 Azure Code Signing 帳戶的名稱
- -c:您的 Azure Code Signing 帳戶內的憑證設定檔名稱
tauri.conf.json {"bundle": {"windows": {"signCommand": "trusted-signing-cli -e https://wus2.codesigning.azure.net -a MyAccount -c MyProfile %1"}}} -
© 2025 Tauri Contributors. CC-BY / MIT