Code Signing med SignTool och AzureSignTool
signtool.exe är Microsofts officiella signeringsverktyg och ingår i Windows SDK. AzureSignTool är ett kostnadsfritt verktyg med öppen källkod som ger stöd för Azure Key Vault. Tillsammans täcker de de vanligaste sätten att kodsignera i Windows.
Båda verktygen signerar de vanliga filtyperna i Windows: .exe, .dll, .msi, .msix, .cab, .ps1, .appx och .sys. Välj signtool.exe för USB-token och det lokala certifikatlagret, eller AzureSignTool för signering i molnet med Azure Key Vault.
Vad är signtool.exe?
Microsofts officiella kommandoradsverktyg för Authenticode-signering. Det ingår i Windows SDK (Windows 10/11 SDK) och signerar de vanliga filtyperna i Windows: .exe, .dll, .msi, .msix, .cab, .ps1, .appx och .sys. Det fungerar direkt med USB-token (SafeNet eToken) via certifikatlagret i Windows.
signtool sign /fd sha256 /tr http://timestamp.digicert.com /td sha256 /a "MyApp.exe"
Vad är AzureSignTool?
AzureSignTool ↗ är ett .NET-verktyg med öppen källkod som signerar som signtool, men med nyckeln i Azure Key Vault. Det autentiserar med service principal, managed identity eller Azure CLI och ersätter signtool.exe helt när nyckeln ligger i Azure Key Vault. Installera det med:
dotnet tool install --global AzureSignTool
Exempel med Azure Key Vault:
AzureSignTool sign \ -kvu https://your-vault.vault.azure.net \ -kvc YourCertName \ -kvt your-tenant-id \ -kvi your-client-id \ -kvs your-client-secret \ -fd sha256 \ -tr http://timestamp.digicert.com \ -td sha256 \ "MyApp.exe"
SignTool eller AzureSignTool
| signtool.exe | AzureSignTool | |
|---|---|---|
| Installation | Ingår i Windows SDK | .NET-verktyg (dotnet tool install) |
| Nyckellagring | USB-token och lokalt certifikatlager | HSM-nycklar i Azure Key Vault |
| Plattform | Bara Windows | Alla plattformar med .NET |
| Stöd för Azure | Nej | Ja, Azure Key Vault |
| CI/CD-pipelines | Kräver fysisk token eller lokalt installerat certifikat | Fungerar direkt i pipelines |
| Pris | Kostnadsfritt (ingår i Windows SDK) | Kostnadsfritt, öppen källkod |
Vanliga signtool-kommandon
Signera med USB-token (automatiskt val av certifikat)
signtool sign /fd sha256 /tr http://timestamp.digicert.com /td sha256 /a "MyApp.exe"
Signera med ett visst certifikat (SHA1-tumavtryck)
signtool sign /fd sha256 /tr http://timestamp.digicert.com /td sha256 /sha1 ABCDEF1234567890 "MyApp.exe"
Kontrollera signaturen
signtool verify /pa /v "MyApp.exe"
Signera flera filer
signtool sign /fd sha256 /tr http://timestamp.digicert.com /td sha256 /a *.exe
Tidsstämpelservrar
Använd alltid /tr (RFC 3161), inte /t (Authenticodes äldre format). RFC 3161 är stabilare och rekommenderas av alla CA:er.
DigiCert: http://timestamp.digicert.com GlobalSign: http://timestamp.globalsign.com/tsa/r6advanced1
Med en tidsstämpel fortsätter signaturen att gälla efter att certifikatet har gått ut. Utan tidsstämpel blir signaturen ogiltig när certifikatet går ut.
Exempel för CI/CD-pipelines
AzureSignTool fungerar i Azure DevOps, GitHub Actions och GitLab CI. Exempel för Azure DevOps och GitHub Actions:
Azure DevOps
- task: DotNetCoreCLI@2
displayName: 'Install AzureSignTool'
inputs:
command: 'custom'
custom: 'tool'
arguments: 'install --global AzureSignTool'
- script: |
AzureSignTool sign \
-kvu $(KeyVaultUrl) \
-kvc $(CertificateName) \
-kvt $(TenantId) \
-kvi $(ClientId) \
-kvs $(ClientSecret) \
-fd sha256 \
-tr http://timestamp.digicert.com \
-td sha256 \
"$(Build.ArtifactStagingDirectory)\**\*.exe"
displayName: 'Sign executables' GitHub Actions
- name: Install AzureSignTool
run: dotnet tool install --global AzureSignTool
- name: Sign executables
run: |
AzureSignTool sign \
-kvu ${{ secrets.KEY_VAULT_URL }} \
-kvc ${{ secrets.CERT_NAME }} \
-kvt ${{ secrets.TENANT_ID }} \
-kvi ${{ secrets.CLIENT_ID }} \
-kvs ${{ secrets.CLIENT_SECRET }} \
-fd sha256 \
-tr http://timestamp.digicert.com \
-td sha256 \
"MyApp.exe" Lagra uppgifterna till Key Vault som pipeline-variabler eller secrets. Med Azure RBAC och en managed identity autentiserar du utan lagrade hemligheter.
Relaterade signeringsverktyg: SignTool / AzureSignTool | Jsign | Jämför alla →
Code Signing-certifikat för SignTool och AzureSignTool
OV Code Signing
DigiCert CodeSign OV
DigiCert OV Code Signing. Fungerar med signtool.exe och AzureSignTool.
GlobalSign CodeSign
GlobalSign OV Code Signing. Fungerar med signtool.exe och AzureSignTool.
EV Code Signing
Vanliga frågor om SignTool och AzureSignTool
Hitta svar på de vanligaste frågorna om SSL-certifikat och FairSSL.
C:\Program Files (x86)\Windows Kits\10\bin\10.x.x.x\x64\signtool.exeRedo att signera med SignTool?
Skapa ett gratis konto och beställ ditt första certifikat. Ett DV-certifikat utfärdas på under 2 minuter.