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.
- 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í.
- V aplikaci nainstalujte SMCTL. Výchozí umístění je C:\Program Files\DigiCert\DigiCert Keylocker Tools\smctl.exe.
- 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.
- 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.
- 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
- Dokumentace DigiCert KeyLocker
- Podepisování pomocí KeyLocker cloud HSM – návod SSLmarketu
- Dokumentace k nástroji SignTool
Code Signing certifikát s KeyLockerem zakoupíte na SSLmarket.cz.
