SSL-certifikaternes maksimale levetid reduceres til 200 dage fra marts 2026. Læs mere →

Google Cloud KMS Code Signing: opsætningsguide

Denne guide dækker opsætning af Google Cloud KMS til Code Signing. Google Cloud KMS leverer HSM-backed nøgler (FIPS 140-2 Level 3) til en lavere pris end Azure Key Vault, men kræver mere kommandolinjearbejde til CSR-generering og indledende opsætning.

Virker med både OV og EV Code Signing-certifikater fra DigiCert og GlobalSign.

Forudsætninger

  • Google Cloud-projekt med fakturering aktiveret
  • gcloud CLI installeret og autentificeret. Download fra cloud.google.com/sdk ↗
  • OpenSSL (til CSR-generering via PKCS#11)
  • Java 11+ (hvis du bruger Jsign til signering)
  • Et Code Signing-certifikat fra FairSSL (DigiCert eller GlobalSign). Se produkter nedenfor

Mere teknisk end Azure Key Vault. Google Cloud KMS kræver konfiguration af PKCS#11-biblioteket og OpenSSL til CSR-generering. Hvis du er ny inden for cloud HSM og ønsker den enkleste opsætning, er Azure Key Vault lettere at komme i gang med.

Trin 1: Aktivér KMS API og opret en key ring

Aktivér Cloud KMS API i dit projekt, og opret derefter en key ring til at opbevare din signeringsnøgle.

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

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

Lokationen kan være global eller en specifik region. For HSM-backed nøgler afgør lokationen, hvilken fysisk HSM der bruges. global virker til de fleste opsætninger.

Trin 2: Opret en HSM-backed nøgle

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

Nøgleindstillinger forklaret

  • purpose: asymmetric-signing (nøglen kan signere, men ikke kryptere)
  • algorithm: rsa-sign-pkcs1-4096-sha256 (RSA 4096-bit med SHA-256)
  • protection-level: hsm (hardware-backed, FIPS 140-2 Level 3)

Den private nøgle genereres inde i HSM'en og kan aldrig eksporteres. Alle signeringsoperationer foregår på HSM-hardwaren. Dette opfylder CA/Browser Forum-kravet til nøgleopbevaring for Code Signing.

Trin 3: Tildel IAM-rettigheder

Den service account, der bruges til signering, skal have 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

Opbevar service account-nøglefilen sikkert. Denne JSON-fil giver signeringsadgang. I CI/CD bør du bruge workload identity federation eller gemme nøglen som en hemmelig variabel.

Trin 4: Generér CSR med PKCS#11

I modsætning til Azure Key Vault (som genererer CSR'en i portalen) kræver Google Cloud KMS, at du bruger PKCS#11-biblioteket og OpenSSL til at generere CSR'en.

Installér PKCS#11-biblioteket

Download Google Cloud KMS PKCS#11-biblioteket fra Cloud KMS PKCS#11-dokumentationen ↗.

Opret PKCS#11-konfigurationsfil

Opret en YAML-konfigurationsfil (f.eks. pkcs11-config.yaml):

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

Generér 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

Parameteren -key refererer til KMS-nøglen via PKCS#11 URI'en. CN skal matche det firmanavn, der er registreret hos CA'en.

Tilføj Code Signing EKU til CSR'en

Opret en OpenSSL extensions-fil (f.eks. codesign.cnf) med Code Signing EKU:

[ req ]
req_extensions = v3_req

[ v3_req ]
keyUsage = digitalSignature
extendedKeyUsage = codeSigning

Tilføj derefter -config codesign.cnf til OpenSSL-kommandoen ovenfor.

Trin 5: Bestil certifikat og indsend CSR

  1. 1
    Bestil et Code Signing-certifikat hos FairSSL. Vælg DigiCert eller GlobalSign, OV eller EV. Se produkter nedenfor.
  2. 2
    Indsend CSR-filen (codesign.csr) under bestillingsprocessen.
  3. 3
    Gennemfør organisationsvalidering. FairSSL håndterer valideringsprocessen.
  4. 4
    Modtag det signerede certifikat fra CA'en.

Trin 6a: Signering med CNG-provideren (Windows)

Google leverer en Windows CNG-provider (Cryptography Next Generation), der giver native signtool.exe-understøttelse. Det lader dig bruge signtool.exe på samme måde som med et lokalt certifikatlager eller en USB-token.

Installér CNG-provideren

  1. Download Google Cloud KMS CNG-provideren fra Cloud KMS CNG-dokumentationen ↗
  2. Installér MSI-pakken
  3. Importér dit signerede certifikat i Windows-certifikatlageret (certutil eller MMC snap-in)
  4. CNG-provideren kobler certifikatet til KMS-nøglen

Signér med signtool

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

CNG-provideren dirigerer signeringsoperationen transparent til Google Cloud KMS. signtool.exe fungerer præcis som med en lokal nøgle.

Trin 6b: Signering med Jsign (cross-platform)

Jsign ↗ er et gratis, open source Java-baseret signeringsværktøj med native understøttelse af Google Cloud KMS. Det virker på Windows, macOS og Linux uden CNG-provideren.

Installér Jsign

Download fra ebourg.github.io/jsign ↗. Kræver Java 11 eller nyere.

Signér 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

Parameteroversigt

  • --storetype GOOGLECLOUD Brug Google Cloud KMS-backend
  • --storepass Indholdet af service account JSON-nøglen
  • --keystore Fuld KMS key ring-ressourcesti
  • --alias Nøglenavn inden for key ring'en
  • --certfile Signeret certifikatfil fra CA'en (PEM-format)
  • --tsaurl RFC 3161 timestamp-server

Timestamping

Inkludér altid et RFC 3161 timestamp, når du signerer. Code Signing-certifikater har en maksimal gyldighed på 459 dage, men signerede filer med timestamp er gyldige på ubestemt tid.

Anbefalede timestamp-servere

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

Fejlfinding

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

PKCS#11-biblioteket er ikke installeret, eller OpenSSL kan ikke finde det. Verificér biblioteksstien, og sørg for at KMS_PKCS11_CONFIG peger på den korrekte konfigurationsfil.

"Permission denied" ved signering

Din service account mangler rollen roles/cloudkms.signerVerifier på nøglen. Verificér IAM-bindingen, og sørg for at GOOGLE_APPLICATION_CREDENTIALS peger på den korrekte service account-nøglefil.

CNG-provideren findes ikke af signtool

Google Cloud CNG-provideren er muligvis ikke installeret korrekt. Geninstallér MSI-pakken, og sørg for at certifikatet er importeret i Windows-certifikatlageret. Certifikatet skal være koblet til CNG-provideren.

Jsign kan ikke autentificere

Verificér at service account-nøglens JSON er gyldig, og at din service account har signeringsrettigheder. Hvis du bruger workload identity federation, skal du kontrollere, at token exchange er konfigureret korrekt.

Code Signing-certifikater

OV Code Signing

DigiCert

DigiCert CodeSign OV

OV

DigiCert OV Code Signing. Virker med Google Cloud KMS.

fra 3.550 DKK /år Se detaljer →
GlobalSign

GlobalSign CodeSign

OV

GlobalSign OV Code Signing. Virker med Google Cloud KMS.

fra 2.800 DKK /år Se detaljer →

EV Code Signing

Ofte stillede spørgsmål om Google Cloud KMS Code Signing

Find svar på de mest almindelige spørgsmål om SSL certifikater og FairSSL.

Marginalt. Google Cloud KMS koster ca. 20 kr./måned for HSM-nøglen plus nogle få øre pr. 10.000 signeringsoperationer. Azure Key Vault Premium koster ca. 35 kr./måned inkl. 500.000 operationer. For de fleste Code Signing-arbejdsgange er prisforskellen ubetydelig.
Det afhænger af CA'ens krav til key attestation. DigiCert og GlobalSign har dokumenteret understøttelse af Google Cloud KMS. Kontakt FairSSL for de seneste kompatibilitetsoplysninger.
Begge dele virker. Google Cloud CNG-provideren giver dig native signtool.exe-understøttelse på Windows. Jsign er cross-platform (Windows, macOS, Linux) og kommunikerer direkte med KMS API'et. Til CI/CD-pipelines er Jsign ofte enklere, fordi det ikke kræver installation af CNG-provideren.
Brug PKCS#11-biblioteket fra Google Cloud til at generere CSR'en via OpenSSL. Den private nøgle forbliver i HSM'en. CSR-filen indeholder kun den offentlige nøgle, som du indsender til CA'en.
Ja. Brug Jsign med en Google Cloud service account-nøgle. Jsign forbinder direkte til KMS API'et og virker i ethvert CI/CD-miljø, der har Java installeret. Alternativt kan du bruge CNG-provideren på Windows-baserede build agents.

Klar til at signere med Google Cloud KMS?

Opret en gratis konto og udsted dit første certifikat på under 10 minutter.