Code Signing: key storage and HSM options
Compare USB token, Azure Key Vault and Google Cloud KMS. Choose the right solution for your code signing workflow.
Required since June 1, 2023
All Code Signing certificates (OV and EV) require the private key to be stored on hardware (FIPS 140-2 Level 2+). Software-only .pfx files are no longer permitted.
Why hardware key storage is required
Industry mandate
CA/Browser Forum, Microsoft and Apple require certified hardware for all Code Signing private keys.
FIPS 140-2 Level 2+
Hardware must be FIPS 140-2 Level 2 or Common Criteria EAL 4+ certified.
Non-exportable
The private key cannot be copied out. All signing happens directly on the device or HSM.
OV and EV
Both OV and EV Code Signing follow the same requirements. Applies to all certificates issued after June 1, 2023.
Recommended solutions
All prices are on top of the certificate price. Prices are per year. Prices for third-party services (Azure, Google, AWS) are approximate and may change.
SafeNet USB token
€0/year
Included in the certificate price. Unlimited signings.
- ✓ RSA 4096-bit, non-exportable key, FIPS 140-2 Level 2
- ✓ Physically connected to the signing machine
- ✓ Extra USB tokens: €100/each, free re-issuance
- ✓ Shipped next business day (orders placed before 10 AM). Typically received within 2 business days.
Signing tools
signtool.exe (Windows), codesign/productsign (macOS), Jsign (all platforms)
Note: SafeNet software blocks RDP sessions. TeamViewer works.
Best for: single-machine signing, no cloud dependency
Azure Key Vault Premium
Recommended~€55/year
~$5/month. Incl. 500,000 signings/year. Extra: $0.03/1,000.
- ✓ RSA-HSM 4096-bit, non-exportable, FIPS 140-2 Level 3
- ✓ Premium SKU required (Standard cannot create RSA-HSM keys)
- ✓ CSR generated directly in the Azure portal
- ✓ Sign from anywhere: CI/CD pipelines, build servers, developer machines
Signing tools
AzureSignTool (Windows, drop-in signtool replacement), Jsign (all platforms)
Best for: CI/CD pipelines, remote signing, teams
Google Cloud KMS
~€28/year
~$2.50/month for HSM key. Signings: $0.015/1,000.
- ✓ RSA 4096 HSM-backed, FIPS 140-2 Level 3
- ✓ CSR via PKCS#11 + OpenSSL (more CLI-focused than Azure)
- ✓ More technical setup than Azure Key Vault
Signing tools
signtool.exe (via Google CNG provider, Windows), Jsign (all platforms)
Google Cloud KMS setup guide →
Best for: organisations already on Google Cloud
Other options
All prices are on top of the certificate price.
DigiCert KeyLocker
~$300/year
1,000 signings incl. DigiCert certificates only.
- ✓ DigiCert-hosted cloud signing
- ✓ Simple setup, managed
- — Limited to 1,000 signings/year
Tools: DigiCert smctl CLI, signtool.exe (via DigiCert KSP)
Best for: simple setup with limited signings per year
Thales Luna A700
~€13,000-33,000
One-time purchase. Unlimited signings (~300 tps).
- ✓ Physical network HSM, FIPS 140-2 Level 3
- ✓ Full control, no cloud dependency
- — High upfront investment + maintenance
Tools: signtool.exe (via PKCS#11/CNG), Jsign
Best for: large enterprises with existing PKI infrastructure
AWS CloudHSM
~$14,000/year
Per HSM cluster. Unlimited signings.
- ✓ FIPS 140-2 Level 3, full PKCS#11
- ✓ Dedicated HSM in AWS cloud
- — Prohibitively expensive for Code Signing alone
Tools: signtool.exe (via PKCS#11), Jsign
Best for: organisations already running CloudHSM for other purposes
AWS KMS
~$12/year
~$1/month for key. Signings: $0.03/1,000.
- ✓ FIPS 140-2 Level 3 (since May 2023)
- ✓ RSA 4096, non-exportable
- — No signtool.exe support
- — CSR requires helper tools
Tools: Jsign only (no signtool/AzureSignTool)
Best for: organisations already invested in AWS
SmartScreen, download warnings and Trusted Publishers
Windows SmartScreen is a download reputation filter built into Windows. When a user downloads and runs a signed executable, SmartScreen evaluates the publisher's reputation. All signed software will initially show a reduced warning ("Windows protected your PC" with a "Run anyway" option) rather than a full block.
EV Code Signing certificates start with higher SmartScreen reputation, which means the warning may be removed faster or not appear at all. OV Code Signing certificates build reputation over time as more users download and run the signed software. Both types build up reputation with each successful download.
To remove the final warning entirely, the certificate must be added to the Trusted Publishers store on the end user's machine. This is typically done by local IT departments via Group Policy for their own software or their main suppliers' certificates. It is not something the software publisher can control on end-user machines.
The key storage method (USB token, Azure Key Vault, Google Cloud KMS) has no effect on SmartScreen reputation. What matters is the certificate type (OV vs EV) and the number of clean downloads over time.
See the detailed SmartScreen overview with warning examples and the four reputation levels.
Azure Key Vault setup overview
This overview covers the key decisions when setting up Azure Key Vault for code signing. FairSSL provides complete step-by-step installation guides for DigiCert and GlobalSign after purchase.
Key Vault configuration
- SKU: Premium (required for HSM-backed keys. Standard SKU cannot create RSA-HSM keys)
- Key type: RSA-HSM, 4096-bit, non-exportable
- Permissions: Key Vault Administrator role required (may need explicit RBAC assignment even with existing admin rights)
Certificate request (CSR)
- Type: "Certificate issued by a non-integrated CA"
- Content type: PEM
- Subject:
CN=Your Company Name(as registered with the CA) - Extended Key Usage:
1.3.6.1.5.5.7.3.3(Code Signing) - Exportable Private Key: No
- Certificate Transparency: No (not required for Code Signing certificates)
After ordering your Code Signing certificate from FairSSL, you will receive a detailed installation guide specific to your CA (DigiCert or GlobalSign) with screenshots and exact steps.
Signing tools
signtool.exe
Windows. Microsoft's official signing tool (part of Windows SDK).
- ✓ Signs .exe, .dll, .msi, .cab, .sys, .appx and Office files
- ✓ Works with USB token (SafeNet), Google Cloud KMS (via CNG provider)
- ✓ Included with Visual Studio and Windows SDK
AzureSignTool
Windows. Drop-in replacement for signtool.exe for Azure Key Vault.
- ✓ Signs directly from Azure Key Vault
- ✓ Free and open source
- ✓ Azure RBAC: requires Key Vault Crypto User, Certificate User and Secrets User roles
Jsign
Cross-platform (Windows, macOS, Linux). Java-based.
- ✓ Supports Azure Key Vault, Google Cloud KMS, AWS KMS, YubiKey, SafeNet and more
- ✓ Works as a bridge for jarsigner (Java/Android signing)
- ✓ Free and open source
codesign / productsign
macOS. Apple's built-in tools for signing apps and installer packages.
- ✓
codesignsigns macOS apps, frameworks and dylibs - ✓
productsignsigns .pkg installer packages - ✓ Works with USB token via Keychain Access
Always use timestamping
Include an RFC 3161 timestamp when signing so your signatures remain valid after the certificate expires.
http://timestamp.digicert.com(recommended, most stable)http://timestamp.globalsign.com/tsa/r6advanced1
What FairSSL helps with
Included with every Code Signing certificate
- ✓ Complete installation guides for DigiCert and GlobalSign with Azure Key Vault
- ✓ HSM attestation form and confirmation handling
- ✓ Organisation validation in English, Danish and Swedish (often completed same day)
- ✓ Free email and phone support throughout the process
Optional add-ons
- ✓ Express USB token delivery: 1-2 business days (shipped next business day, order before 10 AM)
- ✓ Remote installation via TeamViewer (€65)
Not included
- — Azure subscription setup
- — API key configuration or service principal setup
- — Build pipeline integration
- — Signing tool configuration
Related signing tools: SignTool / AzureSignTool | Jsign | Compare all →
Code Signing certificates
OV Code Signing
DigiCert CodeSign OV
DigiCert OV Code Signing. Broad platform support.
GlobalSign CodeSign
GlobalSign OV Code Signing. Strong brand.
EV Code Signing
Frequently asked questions about Code Signing key storage
Find answers to the most common questions about SSL certificates and FairSSL.
Ready to secure your signing keys?
Create a free account and issue your first certificate in under 10 minutes.