Dobrý den! Pokračujme v této témě ().
Dnes přejdeme k praktické části. Začneme s nastavením vlastního certifikačního úřadu na základě plnohodnotné kryptografické knihovny s otevřeným zdrojovým kódem openSSL. Tento algoritmus byl ověřen použitím systému Windows 7.
Po nainstalování openSSL můžeme provádět různé kryptografické operace (například vytváření klíčů a certifikátů) prostřednictvím příkazového řádku.
Postup je následující:
- Stáhněte instalační balík openssl-1.1.1g.
openSSL má různé verze. V dokumentaci k Ruttoken bylo uvedeno, že potřebujete verzi openSSL 1.1.0 nebo novější. Použil jsem verzi openssl-1.1.1g. Můžete stáhnout openSSL z oficiálních stránek, ale pro jednodušší instalaci je nutné najít instalační soubor pro Windows online. Udělal jsem to za vás:
Musíte stránku posunout dolů a stáhnout Win64 OpenSSL v1.1.1g EXE 63MB Installer. - Nainstalujte openssl-1.1.1g na počítač.
Instalaci je třeba provést standardní cestou, která se automaticky uvádí do složky C:Program Files. Program se nainstaluje do složky OpenSSL-Win64. - Aby bylo možné nakonfigurovat openSSL podle vašich potřeb, existuje soubor openssl.cfg. Tento soubor se nachází na cestě C:Program FilesOpenSSL-Win64bin, pokud jste nainstalovali openSSL tak, jak bylo uvedeno v předchozím bodě. Přejděte do složky, kde je openssl.cfg uložen, a otevřete tento soubor například pomocí Notepad++.
- Jistě vás napadne, že nastavení certifikačního úřadu bude provedeno určitými změnami obsahu souboru openssl.cfg, a máte zcela pravdu. K tomu je třeba nakonfigurovat příkaz [ ca ]. V souboru openssl.cfg najdeme začátek textu, kde provedeme změny, takto: [ ca ].
- Nyní uvedu příklad nastavení s jeho popisem:
[ ca ] default_ca = CA_default [ CA_default ] dir = /Users/username/bin/openSSLca/demoCA certs = $dir/certs crl_dir = $dir/crl database = $dir/index.txt new_certs_dir = $dir/newcerts certificate = $dir/ca.crt serial = $dir/private/serial crlnumber = $dir/crlnumber crl = $dir/crl.pem private_key = $dir/private/ca.key x509_extensions = usr_certNyní je třeba vytvořit katalog demoCA a podkatalogy, jak je ukázáno v předchozím příkladu. A umístit do tohoto katalogu na cestu, která je uvedena v dir (u mě /Users/username/bin/openSSLca/demoCA).
Je velmi důležité správně uvést dir – to je cesta k adresáři, kde bude naše certifikační autorita umístěna. Tento adresář by měl být nutně umístěn v /Users (což znamená v účtu nějakého uživatele). Pokud umístíte tento adresář například do C:Program Files, systém nenajde soubor s nastavením openssl.cfg (alespoň u mě to tak bylo).
$dir – zde se uvede cesta, která je uvedena v dir.
Dalším důležitým bodem je vytvořit prázdný soubor index.txt, bez tohoto souboru příkazy „openSSL ca …“ nebudou fungovat.
Je také třeba mít soubor serial, kořenový privátní klíč (ca.key), kořenový certifikát (ca.crt). Proces získávání těchto souborů bude popsán dále.
- Připojujeme šifrovací algoritmy poskytované RuTokenem.
Toto připojení probíhá v souboru openssl.cfg.- Nejdříve je třeba stáhnout potřebné algoritmy RuTokenu. Jsou to soubory rtengine.dll, rtpkcs11ecp.dll.
Za tímto účelem stáhneme RuToken SDK: .RuToken SDK – to je vše, co existuje pro vývojáře, kteří chtějí vyzkoušet RuToken. Obsahuje jak jednotlivé příklady pro práci s RuTokenem v různých programovacích jazycích, tak některé knihovny. Naše knihovny rtengine.dll a rtpkcs11ecp.dll se nacházejí v RuToken sdk na následujícím místě:
sdk/openssl/rtengine/bin/windows-x86_64/lib/rtengine.dll
sdk/pkcs11/lib/windows-x86_64/rtpkcs11ecp.dllJe velmi důležité. Knihovny rtengine.dll, rtpkcs11ecp.dll nefungují bez nainstalovaného ovladače pro RuToken. Také RuToken musí být připojen k počítači. (o instalaci všeho potřebného pro RuToken viz předchozí část článku )
- Knihovny rtengine.dll a rtpkcs11ecp.dll lze umístit kamkoli v uživatelském účtu.
- Uvedeme cesty k těmto knihovnám v openssl.cfg. Za tímto účelem otevřeme soubor openssl.cfg, na začátek tohoto souboru je třeba umístit řádek:
openssl_conf = openssl_defNa konec souboru je třeba přidat:
[ openssl_def ] engines = engine_section [ engine_section ] rtengine = gost_section [ gost_section ] dynamic_path = /Users/username/bin/sdk-rutoken/openssl/rtengine/bin/windows-x86_64/lib/rtengine.dll MODULE_PATH = /Users/username/bin/sdk-rutoken/pkcs11/lib/windows-x86_64/rtpkcs11ecp.dll RAND_TOKEN = pkcs11:manufacturer=AktivCo.;model=RutokenECP default_algorithms = CIPHERS, DIGEST, PKEY, RANDdynamic_path – je třeba uvést vlastní cestu k knihovně rtengine.dll.
MODULE_PATH – je třeba uvést vlastní cestu k knihovně rtpkcs11ecp.dll.
- Nejdříve je třeba stáhnout potřebné algoritmy RuTokenu. Jsou to soubory rtengine.dll, rtpkcs11ecp.dll.
- Přidáváme proměnné prostředí.
Je třeba přidat proměnnou prostředí, která udává cestu k souboru konfigurace openssl.cfg. V mém případě byla vytvořena proměnná OPENSSL_CONF s cestou C:Program FilesOpenSSL-Win64binopenssl.cfg.
Do proměnné path je třeba uvést cestu k adresáři, ve kterém se nachází openssl.exe, v mém případě je to: C:Program FilesOpenSSL-Win64bin.
- Nyní se můžeme vrátit k bodu 5 a vytvořit chybějící soubory pro adresář demoCA.
- První důležitý soubor, bez kterého nic nebude fungovat — serial. Je to soubor bez přípony, jehož hodnota musí být 01. Tento soubor lze vytvořit ručně a zapsat do něj 01. Můžete také stáhnout z RKS SDK na cestě sdk/openssl/rtengine/samples/tool/demoCA/.
V adresáři demoCA se nachází soubor serial, který právě potřebujeme. - Vytváříme kořenový privátní klíč.
K tomu využijeme příkaz knihovny openSSL, který je třeba spustit přímo v příkazovém řádku:openssl genpkey -algorithm gost2012_256 -pkeyopt paramset:A -out ca.key - Vytváříme kořenový certifikát.
K tomu použijeme následující příkaz knihovny openSSL:openssl req -utf8 -x509 -key ca.key -out ca.crtVšimněte si, že pro vytvoření kořenového certifikátu je potřeba kořenový privátní klíč, který byl vytvořen v předchozím kroku. Proto musí být příkazový řádek spuštěn ve stejné adresáři.
Nyní máme všechny chybějící soubory pro kompletní konfiguraci adresáře demoCA. Umístěte vytvořené soubory do těch adresářů, které byly uvedeny v bodu 5.
- První důležitý soubor, bez kterého nic nebude fungovat — serial. Je to soubor bez přípony, jehož hodnota musí být 01. Tento soubor lze vytvořit ručně a zapsat do něj 01. Můžete také stáhnout z RKS SDK na cestě sdk/openssl/rtengine/samples/tool/demoCA/.
Budeme považovat, že po splnění všech 8 bodů je náš certifikační úřad plně nastaven.
V další části vám ukážu, jak budeme pracovat s certifikačním úřadem, abychom provedli to, co bylo popsáno v .
Zdroj: habr.com
