SSL-certifikat får vara giltiga i högst 199 dagar. Senast 2027-03-15 blir gränsen 99 dagar, för DigiCert-certifikat redan från 2027-02-24. Läs mer →
Svensk support på svenska, vardagar 10:00-16:00 +46 10 101 03 34 info@fairssl.se

Kodsignering med Google Cloud KMS: installationsguide

Den här guiden beskriver hur du konfigurerar Google Cloud KMS för kodsignering. Google Cloud KMS ger HSM-skyddade nycklar (FIPS 140-2 Level 3) till lägre kostnad än Azure Key Vault, men kräver mer arbete på kommandoraden för att generera CSR:en och göra grundkonfigurationen.

Fungerar med kodsigneringscertifikat på både OV- och EV-nivå 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 kodsigneringscertifikat från FairSSL (DigiCert eller GlobalSign). Se produkterna nedan

Mer tekniskt än Azure Key Vault. Med Google Cloud KMS måste du konfigurera PKCS#11-biblioteket och OpenSSL för att generera CSR:en. Om du inte har arbetat med HSM i molnet tidigare och vill ha så få steg som möjligt ä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 projektet och skapa sedan en key ring som ska innehålla signeringsnyckeln.

# 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-skyddade nycklar avgör platsen vilken fysisk HSM som används. Välj en region om nyckeln måste ligga i ett visst område, annars fungerar global.

Steg 2: Skapa en HSM-skyddad 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

Nyckelinställningarna förklarade

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

Den privata nyckeln genereras i HSM:en och kan inte exporteras. Alla signeringsoperationer utförs i HSM:en. Det uppfyller CA/Browser Forums krav på nyckellagring för kodsignering.

Steg 3: Tilldela IAM-behörigheter

Tjänstekontot 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 tjänstekontots nyckelfil säkert. JSON-filen ger behörighet att signera. I CI/CD bör du använda 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 PKCS#11-biblioteket för Google Cloud KMS från Cloud KMS PKCS#11-dokumentationen ↗.

Skapa en konfigurationsfil för PKCS#11

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 pekar på KMS-nyckeln med en PKCS#11-URI. CN måste stämma med företagsnamnet som är registrerat hos CA:n.

Lägg till EKU för kodsignering i CSR:en

Skapa en OpenSSL-konfigurationsfil med tilläggen (t.ex. codesign.cnf) så att CSR:en får EKU för kodsignering:

[ 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

Ordningen skiljer sig mellan DigiCert och GlobalSign

DigiCert: CSR:en måste vara klar innan beställningen kan skapas. Den lämnas in som en del av beställningen.

GlobalSign: beställningen skapas utan CSR. Organisationsvalideringen genomförs först, och CSR:en lämnas in efteråt via den länk för utfärdande som GlobalSign skickar till godkännarens e-postadress.

I båda fallen ska en tekniskt ansvarig underteckna ett intyg om att den privata nyckeln är genererad och lagras i en HSM och inte kan exporteras.

  1. 1
    Beställ ett kodsigneringscertifikat hos FairSSL. Välj DigiCert eller GlobalSign, OV eller EV. Se produkterna nedan.
  2. 2
    Skicka in CSR-filen (codesign.csr) när du beställer.
  3. 3
    Genomför organisationsvalideringen. FairSSL hanterar valideringen.
  4. 4
    Ta emot det signerade certifikatet från CA:n.

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

Google har en CNG-provider (Cryptography Next Generation) för Windows som ger inbyggt stöd för signtool.exe. Du använder signtool.exe på samma sätt som med ett lokalt certifikatlager eller en USB-token.

Installera CNG-providern

  1. Ladda ner CNG-providern för Google Cloud KMS från Cloud KMS CNG-dokumentationen ↗
  2. Installera MSI-paketet
  3. Importera det signerade certifikatet till certifikatlagret i Windows (med certutil eller MMC-snapin)
  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 skickar signeringsoperationen vidare till Google Cloud KMS utan att du märker det. signtool.exe fungerar som med en lokal nyckel.

Steg 6b: Signera med Jsign (plattformsoberoende)

Jsign ↗ är ett kostnadsfritt Java-baserat signeringsverktyg med öppen källkod och inbyggt stöd för Google Cloud KMS. Det fungerar i 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

Parametrarna

  • --storetype GOOGLECLOUD Använd Google Cloud KMS som nyckellager
  • --storepass Innehållet i tjänstekontots JSON-nyckel
  • --keystore Fullständig resurssökväg till key ring i KMS
  • --alias Nyckelns namn i key ring
  • --certfile Det signerade certifikatet från CA:n (PEM-format)
  • --tsaurl Tidsstämpelserver enligt RFC 3161

Tidsstämpling

Lägg alltid till en tidsstämpel enligt RFC 3161 när du signerar. Kodsigneringscertifikat har en giltighetstid på högst 460 dagar, men tidsstämplade signaturer förblir giltiga även efter att certifikatet har gått ut.

Rekommenderade tidsstämpelservrar

  • 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å hittar OpenSSL det inte. Kontrollera sökvägen till biblioteket och att KMS_PKCS11_CONFIG pekar på rätt konfigurationsfil.

"Permission denied" vid signering

Tjänstekontot saknar rollen roles/cloudkms.signerVerifier på nyckeln. Kontrollera IAM-bindningen och att GOOGLE_APPLICATION_CREDENTIALS pekar på rätt nyckelfil för tjänstekontot.

signtool hittar inte CNG-providern

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

Jsign kan inte autentisera sig

Kontrollera att JSON-nyckeln för tjänstekontot är giltig och att tjänstekontot har behörighet att signera. Om du använder workload identity federation ska du kontrollera att tokenutbytet är rätt konfigurerat.

Kodsigneringscertifikat

OV Code Signing

DigiCert

DigiCert CodeSign OV

OV

DigiCert OV Code Signing. Fungerar med Google Cloud KMS.

från 5 300 SEK 4 180 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 kodsignering med Google Cloud KMS

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. Vid normal signeringsvolym är skillnaden försumbar.
Det beror på CA:ns krav på nyckelattestering. DigiCert och GlobalSign har dokumenterat stöd för Google Cloud KMS. Kontakta FairSSL för aktuell information om kompatibilitet.
Båda fungerar. CNG-providern från Google Cloud ger inbyggt stöd för signtool.exe i Windows. Jsign är plattformsoberoende (Windows, macOS, Linux) och kommunicerar direkt med KMS API. I CI/CD-pipelines är Jsign ofta lättare att använda eftersom CNG-providern inte behöver installeras.
Använd PKCS#11-biblioteket från Google Cloud och generera CSR:en med OpenSSL. Den privata nyckeln stannar i HSM:en. CSR-filen innehåller bara den offentliga nyckeln, och det är den filen du skickar in till CA:n.
Ja. Använd Jsign med en nyckel för ett tjänstekonto i Google Cloud. Jsign ansluter direkt till KMS API och fungerar i alla CI/CD-miljöer där Java är installerat. Du kan också använda CNG-providern på byggagenter som kör Windows.

Redo att signera med Google Cloud KMS?

Skapa ett gratis konto och beställ ditt första certifikat. Ett DV-certifikat utfärdas på under 2 minuter.