Zkušenosti s aplikací technologie Rutoken pro registraci a autorizaci uživatelů v systému (část 2)

Dobrý den! Pokračujme v této témě (s předchozí částí se můžete seznámit na odkazu).

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í:

  1. 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: slproweb.com/products/Win32OpenSSL.html
    Musíte stránku posunout dolů a stáhnout Win64 OpenSSL v1.1.1g EXE 63MB Installer.
  2. 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.
  3. 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++.
  4. 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 ].
  5. 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_cert
    

    Nyní 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.

  6. 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: www.rutoken.ru/developers/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.dll

      Je 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 habr.com/ru/post/506450)

    • 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_def

      Na 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, RAND
      

      dynamic_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.

  7. 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.

  8. Nyní se můžeme vrátit k bodu 5 a vytvořit chybějící soubory pro adresář demoCA.
    1. 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.
    2. 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

    3. 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.crt

      Vš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.

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 předchozí části článku.

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster