Key Takeaways
- A code signing certificate lets you cryptographically sign software so users and operating systems can verify who published it and confirm it hasn’t been tampered with since release.
- SSL.com issues code signing private keys only to FIPS-validated hardware (YubiKey or Thales SafeNet USB tokens) or to the cloud-based eSigner service — private keys can never be exported as a downloadable .pfx file.
- Signing is performed with Microsoft’s SignTool, or an eSigner tool (eSigner CKA, eSigner CodeSignTool, or the eSigner CSC API), depending on whether your certificate lives on a token or in the cloud.
- As of March 1, 2026, CA/Browser Forum Baseline Requirements cap the validity of publicly trusted code signing certificates at 458 days; your purchased term is unaffected, but individual certificates within that term may need periodic reissuance.
- Always timestamp your signatures so they remain valid after the certificate itself expires.
Prerequisites Common to All Signing Methods
Before you begin, regardless of which certificate delivery method you’re using, make sure you have:- Windows SDK installed, which includes SignTool (SignTool ships with the Windows 10/11 SDK — there’s no separate download required)
- The file you intend to sign saved locally and accessible from the command line
- Administrator access on the signing machine, since some configuration steps and SignTool operations require elevated permissions
Option 1: Token-Based Code Signing
SSL.com ships code signing certificates on two supported hardware tokens: YubiKey (FIPS-validated) and Thales SafeNet (Gemalto). This guide assumes a certificate is already installed on your token.
A. YubiKey Code Signing
Installation and configuration requirements
- Install the Windows SDK and SignTool. SignTool is bundled with the Windows 10/11 SDK and is typically installed at a path similar to C:\Program Files (x86)\Windows Kits\10\bin\<SDK VERSION>\x64\signtool.exe.
- Download and install the YubiKey Smart Card Minidriver, available from Yubico. This driver is required for Windows to recognize the FIPS token.
- Locate your YubiKey PIN. You’ll be prompted for this PIN every time you sign. It’s viewable from your SSL.com account.
For the complete guide, with detailed screenshots on finding your PIN and PUK, see: Access Your YubiKey FIPS PIN and PUK
Signing your first file
With the token connected and the minidriver installed, open PowerShell or Command Prompt and run:.\signtool.exe sign /fd sha256 /a "C:\path\to\MyExecutable.exe"
Here’s what each part of that command does:
.\signtool.exeinvokes SignTool. Depending on your SDK version and how your PATH is configured, you may instead need the full path to signtool.exe.
/fd sha256sets the digest (hash) algorithm used when signing. This flag is mandatory on Windows 10 SDK, HLK, WDK, and ADK builds 20236 and above, and SHA256 is recommended over SHA1 for stronger security.
/atells SignTool to automatically select an appropriate code signing certificate — useful when only one certificate is present.
"C:\path\to\MyExecutable.exe"is the full path to the file you’re signing.
Adding a timestamp (recommended)
Timestamping ensures your signature remains valid even after the certificate expires, since the timestamp proves the code was signed while the certificate was still valid. Add/tr http://ts.ssl.com /td sha256 to your command — note that SSL.com’s timestamp server requires the /tr flag specifically (not the older /t flag), and /td must come after /tr or SignTool will silently default to the weaker SHA-1 timestamp algorithm.
For the complete guide — including how to select a specific certificate when multiple are present, full timestamping options, and additional SignTool flags — see: Using Your Code Signing Certificate: Signing an Executable with YubiKey
B. Thales SafeNet (Gemalto) USB Token
Installation and configuration requirements
- Install the Windows SDK and SignTool (as above).
- Install SafeNet Authentication Client, the middleware that manages Thales SafeNet hardware. For the complete guide, with detailed download and installation instructions, see: SafeNet Authentication Client Download for Code Signing Certificates
- Activate your Thales SafeNet token. Because SSL.com pre-installs the certificate on the token before shipping, activation is done through your SSL.com account rather than locally:
- Locate the serial number printed on the physical token.
- Sign in to your SSL.com account and open the Orders tab.
- Click the download/details link for your certificate order, then find the Physical Tokens section.
- Enter the token’s serial number to activate it. This reveals your Activation PIN (also called the Token Password, entered when signing) and your Admin PIN (also called the PUK, used only to reset a locked token).
Signing your first file
- Connect the Thales SafeNet token to your computer.
- Open SafeNet Authentication Client so the token is recognized.
- Run the signing command:
signtool sign /tr http://ts.ssl.com /td sha256 /fd sha256 /a "PATH_OF_FILE_TO_BE_SIGNED"
/fd sha256— digest algorithm used for signing
/trhttp://ts.ssl.com— SSL.com’s timestamp server address
/td sha256— timestamp digest algorithm
/a— automatically selects an appropriate certificate
- The file path should be wrapped in double quotes and include the filename itself, e.g.
"C:\Users\Admin\Documents\test file.dll".
- Run Command Prompt as administrator and execute the command.
- When prompted, enter your Token Password (the Activation PIN from your SSL.com order page).
- A success message confirms the file is signed.
For the complete guide — including how to select a specific certificate by Subject Name or thumbprint when multiple are present, and full signature verification steps — see: Code Signing with a Thales SafeNet (Gemalto) USB Token
For the complete guide, see: How to Change your Thales SafeNet/Gemalto Token Password
Verifying Your Signature (Both Token Types)
After signing, confirm the signature is valid:.\signtool.exe verify /pa "C:\path\to\MyExecutable.exe"
A successful result displays the algorithm and timestamp used. You can also right-click the signed file, open Properties, and check the Digital Signatures tab to visually confirm the signer identity and signing date.
Option 2: SSL.com eSigner Cloud Code Signing
If managing physical tokens isn’t practical for your team — particularly for distributed developers or automated build pipelines — eSigner lets you sign code remotely from any internet-connected device, with the private key secured in SSL.com’s cloud HSM rather than on hardware you manage. eSigner code signing requires an EV Code Signing Certificate and supports a broad range of file types, including Microsoft Authenticode formats (.exe, .dll, .sys, .ocx, and others), MSI installers, PowerShell scripts, CAB and CAT files, Java .jar files, and — when signed via eSigner CKA — MSIX, MDB, and ACCDE files as well. Maximum file size is 200 MB for code signing regardless of whether you use eSigner Express or the eSigner API.For the complete, up-to-date list of supported file types and size limits (including document signing formats), see: eSigner Supported File Types
Step 1: Enroll Your Certificate in eSigner
Before you can sign anything, your certificate order must be enrolled in eSigner and paired with two-factor authentication (2FA), which is required on every signing operation. You have two enrollment paths:QR Code (Authenticator App) Method
- Log in to your SSL.com account, click Orders, and open your certificate order’s details page.
- Find the eSigner Cloud Signing Enrollment section and select OTP APP as your second-factor method.
- Create a 4-digit PIN and save it securely — ideally in a password manager, since you’ll need it again to add, remove, or replace signing devices later.
- Click create OTP and issue certificate. A QR code appears.
- Scan the QR code with an authenticator app such as Google Authenticator or Authy. The app will now generate 30-second one-time passwords used for every future signing operation. Note that the QR code is only displayed once — it will not reappear if you reload the page.
OTP SMS Method
- Log in to your SSL.com account (select the correct team if you belong to more than one), click Orders, and open your certificate’s details page.
- Under Second factor authentication, select OTP SMS.
- In the Mobile number verification section, choose your country code, enter your mobile number, and click send OTP SMS.
- Check your phone for a 6-digit code from “AuthMSG” (SSL.com’s verification service), enter it on the order page, and click verify phone.
- Once verified, click create OTP and issue certificate to complete enrollment. Your account page will then display the last four digits of the verified phone number.
For the complete enrollment guide, with full screenshots for both methods, see: Enroll with eSigner for Remote Document and Code Signing
Step 2: Choose a Signing Tool
Once enrolled, pick the signing method that fits your workflow:eSigner Cloud Key Adapter (CKA)
A Windows application that behaves like a virtual USB token, loading your cloud-based certificate into the Windows certificate store so that familiar tools like signtool.exe and certutil.exe can use it directly. This is the best option for teams that want to keep using existing SignTool-based workflows without physical hardware. Requirements: certificate enrolled in eSigner; eSigner CKA installed and configured for manual or automated signing; Windows SDK/SignTool installed; the file to sign saved locally; and, for manual signing, your 2FA method ready.For the complete installation and configuration guide, see: How to Install SSL.com eSigner Cloud Key Adapter (CKA)
"C:\Program Files (x86)\Windows Kits\10\bin\10.0.22000.0\x86\signtool.exe" sign /fd sha256 /tr http://ts.ssl.com /td sha256 /sha1 CERTIFICATE_THUMBPRINT "SIGNABLE_FILE_PATH"
/fd sha256— hash algorithm
/trhttp://ts.ssl.comand/td sha256— timestamp server and digest algorithm
/sha1 CERTIFICATE_THUMBPRINT— identifies which certificate to use from the certificate store by thumbprint
- The signable file path should be quoted
- Signing Hardware Lab Kit (HLK) Files — using eSigner CKA with HLKSigntool to prepare kernel-mode drivers for Microsoft submission
- Signing VBA Macros — signing Microsoft Visual Basic for Applications macros used to automate Office tasks
- Signing .app Files — securely defining and referencing the identity of a complete Microsoft application solution
- Signing .vsix Files — signing Visual Studio extension and add-on packages
For the complete CI/CD integration guide, see: How to Integrate eSigner CKA with CI/CD Tools for Automated Code Signing (confirm current URL on ssl.com, as none was provided in source material)
eSigner CodeSignTool
A cross-platform, Java-based command-line utility built for automated and high-volume signing, including CI/CD pipelines. Rather than transmitting your actual file, CodeSignTool sends only a cryptographic hash of the file to SSL.com for signing, which is a meaningful advantage if your files contain sensitive code that shouldn’t leave your network. For CI/CD automation, CodeSignTool relies on the following environment variables:| Variable | Purpose |
| USERNAME | Your SSL.com account username |
| PASSWORD | Your SSL.com account password |
| CREDENTIAL_ID | Identifies which code signing certificate to use — required only if you have more than one eSigner certificate; if omitted with a single certificate, that one is used by default |
| TOTP_SECRET | OAuth TOTP secret used for automated 2FA — see the Automate eSigner EV Code Signing guide |
| ENVIRONMENT_NAME | Set to TEST or PROD |
- input_file_path (required) — path to the file to be signed
- output_dir_path — destination directory for the signed file; if omitted, the original file is overwritten with the signed version
For the complete local-signing command reference, see: eSigner CodeSignTool Command Guide (link not provided in source material — search “eSigner CodeSignTool Command Guide” on ssl.com or contact SSL.com support for the current URL)