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 Beställ ett Code Signing-certifikat från FairSSL. Välj DigiCert eller GlobalSign, OV eller EV. Se produkter nedan.
- 2 Skicka in CSR-filen (
codesign.csr) under beställningsprocessen. - 3 Genomför organisationsvalidering. FairSSL hanterar valideringsprocessen.
- 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
- Ladda ner Google Cloud KMS CNG-providern från Cloud KMS CNG-dokumentationen ↗
- Installera MSI-paketet
- Importera ditt signerade certifikat till Windows certificate store (certutil eller MMC snap-in)
- 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 GOOGLECLOUDAnvänd Google Cloud KMS-backend--storepassInnehållet i service account JSON-nyckeln--keystoreFullständig KMS key ring-resurssökväg--aliasNyckelnamn inom key ring--certfileSignerad certifikatfil från CA:n (PEM-format)--tsaurlRFC 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 CodeSign OV
DigiCert OV Code Signing. Fungerar med Google Cloud KMS.
GlobalSign CodeSign
GlobalSign OV Code Signing. Fungerar med Google Cloud KMS.
EV Code Signing
Vanliga frågor om Google Cloud KMS Code Signing
Hitta svar på de vanligaste frågorna om SSL-certifikat och FairSSL.
Redo att signera med Google Cloud KMS?
Skapa ett gratis konto och utfärda ditt första certifikat på under 10 minuter.