SSL-certifikatens maximala livslängd reduceras till 200 dagar från mars 2026. Läs mer →

Google Cloud KMS Code Signing: installationsguide

Den här guiden beskriver hur du konfigurerar Google Cloud KMS för Code Signing. Google Cloud KMS tillhandahåller HSM-backade nycklar (FIPS 140-2 Level 3) till en lägre kostnad än Azure Key Vault, men kräver mer kommandoradsarbete för CSR-generering och initial konfiguration.

Fungerar med både OV och EV Code Signing-certifikat från DigiCert och GlobalSign.

Förutsättningar

  • Google Cloud-projekt med fakturering aktiverad
  • gcloud CLI installerat och autentiserat. Ladda ner från cloud.google.com/sdk ↗
  • OpenSSL (för CSR-generering via PKCS#11)
  • Java 11+ (om du använder Jsign för signering)
  • Ett Code Signing-certifikat från FairSSL (DigiCert eller GlobalSign). Se produkter nedan

Mer tekniskt än Azure Key Vault. Google Cloud KMS kräver konfiguration av PKCS#11-biblioteket och OpenSSL för CSR-generering. Om du är ny på molnbaserad HSM och vill ha den enklaste konfigurationen är Azure Key Vault lättare att komma igång med.

Steg 1: Aktivera KMS API och skapa en key ring

Aktivera Cloud KMS API i ditt projekt och skapa sedan en key ring för att hålla din signeringsnyckel.

# Enable the KMS API
gcloud services enable cloudkms.googleapis.com

# Create a key ring
gcloud kms keyrings create codesign-keyring \
  --location global

Platsen kan vara global eller en specifik region. För HSM-backade nycklar avgör platsen vilken fysisk HSM som används. global fungerar för de flesta konfigurationer.

Steg 2: Skapa en HSM-backad nyckel

gcloud kms keys create codesign-key \
  --keyring codesign-keyring \
  --location global \
  --purpose asymmetric-signing \
  --default-algorithm rsa-sign-pkcs1-4096-sha256 \
  --protection-level hsm

Förklaring av nyckelinställningar

  • purpose: asymmetric-signing (nyckeln kan signera men inte kryptera)
  • algorithm: rsa-sign-pkcs1-4096-sha256 (RSA 4096-bitars med SHA-256)
  • protection-level: hsm (hårdvarubackad, FIPS 140-2 Level 3)

Den privata nyckeln genereras inne i HSM:en och kan aldrig exporteras. Alla signeringsoperationer sker på HSM-hårdvaran. Detta uppfyller CA/Browser Forums krav för nyckellagring vid Code Signing.

Steg 3: Tilldela IAM-behörigheter

Service account:et som används för signering behöver rollen Cloud KMS CryptoKey Signer.

# Create a service account for signing
gcloud iam service-accounts create codesign-signer \
  --display-name "Code Signing Service Account"

# Grant signing permission on the key
gcloud kms keys add-iam-policy-binding codesign-key \
  --keyring codesign-keyring \
  --location global \
  --member "serviceAccount:codesign-signer@YOUR_PROJECT.iam.gserviceaccount.com" \
  --role "roles/cloudkms.signerVerifier"

# Create a service account key file (for use outside GCP)
gcloud iam service-accounts keys create ~/codesign-sa-key.json \
  --iam-account codesign-signer@YOUR_PROJECT.iam.gserviceaccount.com

Förvara service account-nyckelfilen säkert. Denna JSON-fil ger signeringsbehörighet. I CI/CD, använd workload identity federation eller lagra nyckeln som en hemlig variabel.

Steg 4: Generera CSR med PKCS#11

Till skillnad från Azure Key Vault (som genererar CSR:en i portalen) kräver Google Cloud KMS att du använder PKCS#11-biblioteket och OpenSSL för att generera CSR:en.

Installera PKCS#11-biblioteket

Ladda ner Google Cloud KMS PKCS#11-biblioteket från Cloud KMS PKCS#11-dokumentationen ↗.

Skapa PKCS#11-konfigurationsfil

Skapa en YAML-konfigurationsfil (t.ex. pkcs11-config.yaml):

tokens:
  - key_ring: "projects/YOUR_PROJECT/locations/global/keyRings/codesign-keyring"
    label: "codesign"

Generera CSR:en med OpenSSL

# Set environment variables
export KMS_PKCS11_CONFIG=./pkcs11-config.yaml
export GOOGLE_APPLICATION_CREDENTIALS=~/codesign-sa-key.json

# Generate CSR
openssl req -new \
  -subj "/CN=Your Company Name" \
  -sha256 \
  -engine pkcs11 \
  -keyform engine \
  -key "pkcs11:object=codesign-key;type=private" \
  -out codesign.csr

Parametern -key refererar till KMS-nyckeln via PKCS#11 URI. CN måste matcha företagsnamnet som är registrerat hos CA:n.

Lägg till Code Signing EKU i CSR:en

Skapa en OpenSSL extensions-fil (t.ex. codesign.cnf) för att inkludera Code Signing EKU:

[ req ]
req_extensions = v3_req

[ v3_req ]
keyUsage = digitalSignature
extendedKeyUsage = codeSigning

Lägg sedan till -config codesign.cnf i OpenSSL-kommandot ovan.

Steg 5: Beställ certifikat och skicka in CSR

  1. 1
    Beställ ett Code Signing-certifikat från FairSSL. Välj DigiCert eller GlobalSign, OV eller EV. Se produkter nedan.
  2. 2
    Skicka in CSR-filen (codesign.csr) under beställningsprocessen.
  3. 3
    Genomför organisationsvalidering. FairSSL hanterar valideringsprocessen.
  4. 4
    Ta emot det signerade certifikatet från CA:n.

Steg 6a: Signering med CNG-providern (Windows)

Google tillhandahåller en Windows CNG-provider (Cryptography Next Generation) som möjliggör native signtool.exe-stöd. Det gör att du kan använda signtool.exe precis som med ett lokalt certifikatlager eller USB-token.

Installera CNG-providern

  1. Ladda ner Google Cloud KMS CNG-providern från Cloud KMS CNG-dokumentationen ↗
  2. Installera MSI-paketet
  3. Importera ditt signerade certifikat till Windows certificate store (certutil eller MMC snap-in)
  4. CNG-providern kopplar certifikatet till KMS-nyckeln

Signera med signtool

signtool sign /sha1 YOUR_CERT_THUMBPRINT /fd sha256 ^
  /tr http://timestamp.digicert.com /td sha256 ^
  "MyApplication.exe"

CNG-providern dirigerar signeringsoperationen transparent till Google Cloud KMS. signtool.exe fungerar exakt som med en lokal nyckel.

Steg 6b: Signering med Jsign (plattformsoberoende)

Jsign ↗ är ett gratis Java-baserat signeringsverktyg med öppen källkod som stöder Google Cloud KMS native. Det fungerar på Windows, macOS och Linux utan CNG-providern.

Installera Jsign

Ladda ner från ebourg.github.io/jsign ↗. Kräver Java 11 eller senare.

Signera med Jsign

jsign --storetype GOOGLECLOUD \
  --storepass "$(cat ~/codesign-sa-key.json)" \
  --keystore "projects/YOUR_PROJECT/locations/global/keyRings/codesign-keyring" \
  --alias "codesign-key" \
  --certfile codesign-cert.pem \
  --tsaurl http://timestamp.digicert.com \
  --tsmode RFC3161 \
  MyApplication.exe

Parameterreferens

  • --storetype GOOGLECLOUD Använd Google Cloud KMS-backend
  • --storepass Innehållet i service account JSON-nyckeln
  • --keystore Fullständig KMS key ring-resurssökväg
  • --alias Nyckelnamn inom key ring
  • --certfile Signerad certifikatfil från CA:n (PEM-format)
  • --tsaurl RFC 3161 timestamp-server

Timestamping

Inkludera alltid en RFC 3161 timestamp vid signering. Code Signing-certifikat har en maximal giltighetstid på 459 dagar, men tidsstämplade signaturer är giltiga på obestämd tid.

Rekommenderade timestamp-servrar

  • http://timestamp.digicert.com (rekommenderad)
  • http://timestamp.globalsign.com/tsa/r6advanced1

Felsökning

"PKCS#11 module not found" vid CSR-generering

PKCS#11-biblioteket är inte installerat eller så kan OpenSSL inte hitta det. Verifiera sökvägen till biblioteket och kontrollera att KMS_PKCS11_CONFIG pekar på rätt konfigurationsfil.

"Permission denied" vid signering

Service account:et saknar rollen roles/cloudkms.signerVerifier på nyckeln. Verifiera IAM-bindningen och kontrollera att GOOGLE_APPLICATION_CREDENTIALS pekar på rätt service account-nyckelfil.

CNG-providern hittas inte av signtool

Google Cloud CNG-providern kan vara felaktigt installerad. Installera om MSI-paketet och kontrollera att certifikatet är importerat till Windows certificate store. Certifikatet måste vara kopplat till CNG-providern.

Jsign kan inte autentisera

Verifiera att service account-nyckelns JSON är giltig och att service account:et har signeringsbehörighet. Om du använder workload identity federation, kontrollera att token exchange är korrekt konfigurerat.

Code Signing-certifikat

OV Code Signing

DigiCert

DigiCert CodeSign OV

OV

DigiCert OV Code Signing. Fungerar med Google Cloud KMS.

från 5 300 SEK /år Se detaljer →
GlobalSign

GlobalSign CodeSign

OV

GlobalSign OV Code Signing. Fungerar med Google Cloud KMS.

från 4 190 SEK /år Se detaljer →

EV Code Signing

Vanliga frågor om Google Cloud KMS Code Signing

Hitta svar på de vanligaste frågorna om SSL-certifikat och FairSSL.

Marginellt. Google Cloud KMS kostar cirka 25 kr/månad för HSM-nyckeln plus några ören per 10 000 signeringsoperationer. Azure Key Vault Premium kostar cirka 50 kr/månad inklusive 500 000 operationer. För de flesta code signing-arbetsbelastningar är kostnadsskillnaden försumbar.
Det beror på CA:ns krav för key attestation. DigiCert och GlobalSign har dokumenterat stöd för Google Cloud KMS. Kontakta FairSSL för den senaste kompatibilitetsinformationen.
Båda fungerar. Google Cloud CNG-providern ger dig native signtool.exe-stöd på Windows. Jsign är plattformsoberoende (Windows, macOS, Linux) och kommunicerar direkt med KMS API. För CI/CD-pipelines är Jsign ofta enklare eftersom det inte kräver installation av CNG-providern.
Använd PKCS#11-biblioteket från Google Cloud för att generera CSR:en via OpenSSL. Den privata nyckeln stannar i HSM:en. CSR-filen innehåller bara den publika nyckeln, som du skickar in till CA:n.
Ja. Använd Jsign med en Google Cloud service account-nyckel. Jsign ansluter direkt till KMS API och fungerar i vilken CI/CD-miljö som helst som har Java installerat. Alternativt kan du använda CNG-providern på Windows-baserade build-agenter.

Redo att signera med Google Cloud KMS?

Skapa ett gratis konto och utfärda ditt första certifikat på under 10 minuter.