Konfigurace certifikátu pro podpis či pečeť

Podepisovat či pečetit dokument certifikátem uloženým lokálně v PEM souboru, v systémovém úložišti Windows cert store, na čipové kartě vložené v Hardware Security Modulu (HSM), případně na kvalifikovaném prostředku (tokenu), lze pomocí metody ConvertFileEx. K identifikaci a použití certifikátů touto metodou je zapotřebí mít nastavené parametry CertificateID a PrivateKeyPIN.

Windows certificate store

Certifikát musí být instalovaný ve Windows certificate store. Nainstalujete ho jedním z těchto způsobů:

  • Dvojklikem na PFX/P12 soubor.

  • Přes Microsoft Management Console (nabídka Start  Spustit (Win+R)  mmc.exe  Soubor  Přidat modul snap-in (Ctrl+M)  Certifikáty).

Instalace certifikátu

Při instalaci certifikátu se v obou případech vybírá umístění, kam se certifikát má nainstalovat. Výchozí volbou je Aktuální uživatel, případně Můj uživatelský účet, ale nabízí se také Místní počítač, případně Účet počítače. Vzhledem k tomu, že aplikační pool LTD v IIS běží pod konkrétním účtem, je důležité, aby daný účet měl k instalovanému certifikátu přístup. Z tohoto důvodu se doporučuje instalovat pro Místní počítač, případně Účet počítače.

image11

Po instalaci certifikátu do úložiště Windows certificate store (pro Místní počítač nebo Účet počítače) je dále nutné nastavit oprávnění. To opět nastavíte v mmc.exe konzoli (stejný postup jako výše), kde v okně otevřeném: Osobní  Certifikáty  pravým tlačítkem na certifikát  Všechny úkoly  Spravovat privátní klíče

image12

je třeba tlačítkem Přidat vložit nového uživatele a tomu nastavit oprávnění Úplné řízení a Čtení.

image13

Identifikace certifikátu

Identifikace certifikátu ve volání metody ConvertFileEx se pak nastaví takto:

urn:hex:<hexadecimalne_kodovany_sha1_hash>

nebo

urn:sha:<base64_kodovany_sha1_hash>

Hash certifikátu lze zjistit z vlastností instalovaného certifikátu, např. přes mmc.exe konzoli (viz výše)  Osobní  Certifikáty  dvojklik na daný certifikát  Podrobnosti  Kryptografický otisk.

image14

Známé problémy

Může se stát, že je certifikát instalován podle výše uvedeného postupu, ale podpis se nedaří a vrací se odpověď:

<ConvertFileExResult>37</ConvertFileExResult>  <ErrorMessage>DigitalSignature error 0x80090008 (Create signature error 0x80090008 (Byl zadán neplatný algoritmus))</ErrorMessage>

Pak je třeba postupovat takto:

  • Smazat instalovaný certifikát.

  • Spustit CMD jako admin (přes pravé tlačítko Spustit jako Správce).

  • Zadat:

    certutil -csp "Microsoft Enhanced RSA and AES Cryptographic Provider" -importpfx My <cesta_k_pfx>
  • Zadat heslo k pfx, tím by mělo dojít k importu.

  • Je dobré ověřit, zda má certifikát nastaveného zvoleného providera, a to přes CMD pomocí:

    certutil -v -store My 0D9662863FD5047CE3EEDA1FA74A3F0580F3114D > C:\logs\certutil-list.txt

    Kde 0D9662863FD5047CE3EEDA1FA74A3F0580F3114D je kryptografický otisk (sha1 hash) certifikátu.

  • Funkčnost ověřte přes nové volání (SoapUI), kdy zkusíte podepsat daným certifikátem.

Lokální kvalifikovaný prostředek (HSM)

Před prvním použitím metody je nutné upravit cestu k PKCS#11 modulu (knihovnám zařízení), kterou zjistíte v dokumentaci příslušného zařízení.

Cesta k modulu se upravuje v konfiguračním a spouštěcím dávkovém souboru

InstallDir\Engine\Misc\Configure_PKCS11.bat

V konfiguračním souboru je přednastavena výchozí cesta ke knihovnám podporovaného HSM od Thales nShield. Po nastavení odpovídající cesty ke knihovnám vašeho zařízení dávkový soubor spusťte.

Identifikace certifikátu

Ve volání metody ConvertFileEx a parametru CertificateID je možné identifikovat certifikát způsobem:

PKCS11:alias:<alias_certifikatu>

nebo

PK11:alias:<alias_certifikatu>

Pro rychlejší identifikaci certifikátu je možné za PKCS11 resp. PK11 přidat specifikaci softkarty:

KCS11:card:<nazev_sofktarty>;alias:<alias_certifikatu>

nebo

PK11:card:<nazev_sofktarty>;alias:<alias_certifikatu>

Vyhledání certifikátu přes PK11 by mělo být nejrychlejší možné řešení, protože se přímo komunikuje s PKCS11 knihovnou HSM zařízení, a ne přes NSS (Network Security Services).

Soubor/data (PEM)

Nejprve je nutné vytvořit PEM soubor z PFX/P12 souboru certifikátu. Postup najdete například zde.

Identifikace certifikátu

Certifikát pro volání metody ConvertFileEx a elementu CertificateID se identifikuje způsobem:

PEMfile:<cesta_k_PEM_souboru_bez_hesla>

Vzdálený kvalifikovaný prostředek (HSM)

Předpokladem pro toto použití je:

  • Uzavřená smlouva s Českou Poštou (klient x PostSignum)

  • Vytvořený přístup a prostor ve vzdáleném HSM (602)

  • Podepsaný souhlas o umístění soukromého klíče do HSM (klient x 602)

Certifikát lze využít pouze při konverzi souboru v metodě ConvertFileEx.

Identifikace certifikátu

Certifikát pro volání metody ConvertFileEx a elementu CertificateID se identifikuje způsobem

HStore:<alias_certifikatu>