{"copy":"Zkop\u00edrovat","expand":"Rozbalit","collapse":"Sbalit","copy_success":"Zkop\u00edrov\u00e1no!","copy_error":"Kop\u00edrov\u00e1n\u00ed selhalo!"}

Podepisování kódu pomocí Google Cloud KMS

Se službou Google Cloud KMS zíkáte cloudové HSM s certifikací FIPS 140-2 Level 3. Můžete podepisovat kód bezpečně, rychle a odkudkoliv. Náklady za počet operací (podpisů) jsou navíc velice příznivé. Cloud KMS podporuje podepisování pomocí Microsoft Cryptography API: Next Generation (CNG).

Pro nastavení a podepsání kódu je třeba udělat následující kroky, které postupně projdeme:

  • Nainstalujte CNG provider
  • Vytvořte svůj podepisovací klíč
  • Vytvořte CSR svůj certifikát
  • Podepište svůj artefakt

Stáhněte si CNG provider

Google publikoval svůj CNG provider ve svém repozitáři na GitHubu. Tyto soubory lze nainstalovat do vašeho systému Windows pomocí přiloženého instalačního souboru .msi. Poté postupujte podle jejich návodu, abyste poskytovatele nakonfigurovali.

Vytvořte svůj podpisový klíč v Cloud HSM

Po vytvoření klíčového svazku (key ring) pro Cloud Key Management Service (KMS) API vytvořte podpisový klíč, který je hardwarově chráněný pomocí Cloud HSM. Vyberte asymetrický algoritmus pro podepisování, který splňuje vaše bezpečnostní požadavky.

Vytvoření podpisového klíče s klíčovým materiálem generovaným v CloudHSM

Vytvořte podpisový klíč s klíčovým materiálem generovaným v Google CloudHSM

Až si vytvoříte první verzi klíče, doporučujeme v jeho detailu v Cloud Console zkopírovat Copy resource name, protože tento údaj budete potřebovat pro KEY_ID. Vypadá takto: projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME/cryptoKeyVersions/1

Vytvoření CSR

Do HSM přirozeně není možné importovat certifikát s privátním klíčem, stejně jako není možné tento pár exportovat. Privátní klíč a CSR tedy musí vznikout v HSM, CSR pak dodáte SSLmarketu a necháte si ho od DigiCertu podepsat. Import vydaného certifikátu je v dalším kroku.

Vytvoření CSR je nejlepší provést na linuxu, pomocí knihovny libengine-pkcs11-openssl, libkmsp11 a API. Samozřejmě budete potřebovat i balík google-cloud-cli.

Vytvoření CSR pak vypadá takto (za pkcs11:id= doplňte ID klíče - resource ID): openssl req -new -subj '/CN=ZONER a.s./' -sha256 -engine pkcs11 -keyform engine -key pkcs11:id=abc123xyz456 > zadost.csr

Žádost pro DigiCert pak budete mít v souboru zadost.csr ve složce, kde právě pracujete.

Získání certifikátu

Vytvořené CSR si nechte podepsat DigiCertem a dostanete zpět nový Code Signing certifikát. Ten už nemusíte vkládat do Google Cloud Console, tam stačí mít privátní klíč. Můžete s certifikátem pracovat lokálně.

Podepište své artefakty

Google od roku 2024 vydal oficiální Cloud KMS CNG Provider, který se do Windows zaregistruje jako Crypto Service Provider (CSP) / Key Storage Provider (KSP) s názvem Google Cloud KMS Provider. Díky tomu může signtool použít klíč(e) v cloudu a nemusí být pouze lokálně na tokenu.

Podepisovat budeme pomocí signtool z Windows SDK. Ujistěte se, že zadáváte správné parametry, například název poskytovatele Google Cloud KMS Provider a ID klíče z Cloud HSM.

Příklad podpisu pomocí signtool: signtool.exe sign ^ /v /debug /fd sha256 /t http://timestamp.digicert.com ^ /f PATH_TO_CERT+CA_CERT ^ /csp "Google Cloud KMS Provider" ^ /kc projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME/cryptoKeyVersions/1 ^ PATH_TO_ARTIFACT_TO_SIGN

Vysvětlení:

  • /kc (Key Container) je cesta k konkrétní KMS CryptoKeyVersion, odpovídá již zmíněnému KEY_ID.

  • /csp určuje konkrétní CNG provider, protože ve Windows jich může být víc. Google Cloud KMS Provider je zaregistrovaný stejně jako např. „Microsoft Software Key Storage Provider“.
  • /f PATH_TO_CA.CERT je cesta k souboru s Code Signing certifikátem + intermediate. Takto sloučený ho dostanete od nás, pokud si ho necháte vydat pro HSM.

Zdroje: