Podepisování aplikací pomocí DigiCert KeyLocker (cloud HSM)

DigiCert KeyLocker je cloudové HSM pro Code Signing certifikáty. Privátní klíč je uložen v certifikovaném HSM v cloudu DigiCertu a vy s ním podepisujete z libovolného počítače nebo sestavovacího serveru – bez fyzického tokenu. Splňuje tak požadavek, aby klíč každého veřejně důvěryhodného Code Signing certifikátu byl v certifikovaném hardwaru.

Návod vychází z postupu SSLmarketu a ukazuje podpis na Windows. Stejný princip platí i pro DigiCert Software Trust Manager z platformy DigiCert ONE.

Jak podepisování v cloudu funguje

Podepisovací nástroj na vašem počítači spočítá hash souboru a do KeyLockeru odešle pouze tento hash. HSM ho podepíše privátním klíčem a vrátí podpis, který nástroj vloží do souboru. Samotná aplikace tedy počítač neopouští a klíč nikdy neopustí HSM.

KeyLocker zahrnuje určitý počet podpisů za dobu platnosti certifikátu (u SSLmarketu 1 000 podpisů), další lze dokoupit. Aktuální podmínky najdete u produktu Code Signing + KeyLocker.

Kompatibilita

Hlavním nástrojem pro podpis je SMCTL (Signing Manager Controller) od DigiCertu. Spolupracuje s nástroji Signtool, Jarsigner, Apksigner, Mage a NuGet. Kromě toho můžete s KeyLockerem podepisovat i přímo:

  • nástrojem signtool přes KSP (Key Storage Provider) DigiCertu,
  • nástrojem jarsigner a dalšími nástroji přes knihovnu PKCS#11,
  • grafickým nástrojem DigiCert Click-to-sign z kontextové nabídky Průzkumníka.

Úplný přehled podporovaných nástrojů a formátů souborů uvádí dokumentace DigiCertu.

Instalace a nastavení

Po vystavení certifikátu se přihlaste do webového rozhraní KeyLockeru. Zobrazí se Průvodce nastavením (setup wizard), který vás provede celým postupem.

  1. Stáhněte a nainstalujte aplikaci DigiCert ONE Clients. Spusťte ji a přihlaste se stejnými údaji jako do webového rozhraní KeyLockeru. Aplikace nainstaluje potřebné knihovny a nastaví proměnné prostředí pro ověření.
  2. V aplikaci nainstalujte SMCTL. Výchozí umístění je C:\Program Files\DigiCert\DigiCert Keylocker Tools\smctl.exe.
  3. Zvolte uložení přihlašovacích údajů. Doporučujeme výchozí volbu Store my credentials – údaje se ve Windows uloží do Správce přihlašovacích údajů (Credential Manager) a nebudete je muset zadávat znovu.
  4. Ověřte spojení příkazem
    smctl healthcheck

    V průvodci pak zaškrtněte I have run the healthcheck command in SMCTL a klikněte na Check Status. Pokud je vše v pořádku, uvidíte zprávu You’re ready to start signing with SMCTL.

  5. Nainstalujte Windows SDK. I při podpisu přes SMCTL potřebujete na Windows nástroj signtool, který je součástí Windows SDK.

Podepisování souborů

Pomocí SMCTL (doporučeno)

Nejjednodušší cestou je nechat si příkaz připravit průvodcem. V průvodci vyberte platformu (např. Authenticode pro Windows), zvolte certifikát a průvodce vám vygeneruje hotový podepisovací příkaz. Stačí ho zkopírovat do příkazové řádky a doplnit cestu k podepisovanému souboru. Popis všech parametrů najdete v dokumentaci SMCTL.

Pomocí signtool

Signtool může s KeyLockerem pracovat dvěma způsoby.

1. Certifikát v úložišti Windows – pokud je certifikát z KeyLockeru synchronizovaný do osobního úložiště certifikátů Windows (synchronizaci provedete příkazem smctl windows certsync), podepisujete stejně jako s tokenem, výběrem podle otisku:

signtool sign /sha1 <otisk-certifikátu> /tr http://timestamp.digicert.com /td SHA256 /fd SHA256 C:\prace\aplikace.exe

2. Přímo přes KSP DigiCertu – s uvedením názvu klíče a souboru s certifikátem:

signtool sign /csp "DigiCert Signing Manager KSP" /kc <alias-klíče> /f C:\prace\certifikat.crt /tr http://timestamp.digicert.com /td SHA256 /fd SHA256 C:\prace\aplikace.exe

Alias klíče (např. key_558469087) a soubor s certifikátem najdete ve webovém rozhraní KeyLockeru. Po úspěšném podpisu signtool vypíše Successfully signed.

Podpis ověříte příkazem:

signtool verify /pa /v C:\prace\aplikace.exe

Více o parametrech signtool a časových razítkách najdete v návodu Jak podepisovat aplikace na Windows (signtool).

Pomocí jarsigner

Pro Javu se KeyLocker používá přes rozhraní PKCS#11. Potřebujete konfigurační soubor (např. pkcs11.cfg) s cestou ke knihovně PKCS#11 z nástrojů KeyLockeru, například:

name=signingmanager
library="C:\Program Files\DigiCert\DigiCert Keylocker Tools\smpkcs11.dll"
slotListIndex=0

Přesný obsah a název knihovny pro vaši platformu ověřte v dokumentaci DigiCertu k jarsigneru. Podpis pak provedete příkazem:

jarsigner -keystore NONE -storepass NONE -storetype PKCS11 -sigalg SHA256withRSA -providerClass sun.security.pkcs11.SunPKCS11 -providerArg pkcs11.cfg -signedjar C:\prace\podepsany.jar C:\prace\aplikace.jar <alias-klíče> -tsa http://timestamp.digicert.com

Ověření podpisu:

jarsigner -verify -certs -verbose C:\prace\podepsany.jar

Obecný postup podpisu JAR souborů popisuje článek Jak podepisovat Java aplikace (JAR) pomocí jarsigner.

Pomocí DigiCert Click-to-sign

Click-to-sign umožňuje podepsat soubor bez příkazové řádky – kliknutím pravým tlačítkem myši na soubor v Průzkumníku Windows. Proměnné s přihlašovacími údaji nastaví průvodce KeyLockeru. Pokud Click-to-sign nefunguje, zkontrolujte, že systémová proměnná PATH obsahuje složku s nástroji KeyLockeru a složku se signtool z Windows SDK, například:

C:\Program Files\DigiCert\DigiCert Keylocker Tools
C:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x64

Číslo verze SDK ve druhé cestě se liší podle nainstalované verze. Podrobnosti uvádí dokumentace Click-to-sign.

Integrace do CI/CD

Velkou výhodou cloudového HSM je snadné zapojení do automatizovaného sestavování – na sestavovací server nemusíte připojovat fyzický token. DigiCert nabízí pluginy pro Azure DevOps, GitHub Actions a Jenkins a další integrace přes PKCS#11. Přehled najdete v dokumentaci CI/CD integrací.

Přihlašovací údaje ke KeyLockeru v CI/CD ukládejte vždy do zabezpečeného úložiště tajemství (secrets) dané platformy, nikdy přímo do skriptů nebo repozitáře.

Dokumentace a další zdroje

Code Signing certifikát s KeyLockerem zakoupíte na SSLmarket.cz.

Přejít nahoru