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

Dobré odpoledne Pokračujme v tomto tématuPředchozí díl najdete na odkazu).

Dnes přejdeme k praktické části. Začněme nastavením naší CA založené na plnohodnotné open source kryptografické knihovně openSSL. Tento algoritmus byl testován pomocí Windows 7.

S nainstalovaným openSSL můžeme přes příkazový řádek provádět různé kryptografické operace (např. vytváření klíčů a certifikátů).

Algoritmus akcí je následující:

  1. Stáhněte si instalační distribuci openssl-1.1.1g.
    openSSL má různé verze. V dokumentaci pro Rutoken bylo uvedeno, že je vyžadována verze openSSL 1.1.0 nebo novější. Použil jsem verzi openssl-1.1.1g. OpenSSL si můžete stáhnout z oficiálních stránek, ale pro snazší instalaci je potřeba najít instalační soubor pro windows na netu. Udělal jsem pro vás toto: slproweb.com/products/Win32OpenSSL.html
    Posuňte stránku dolů a stáhněte si instalační program Win64 OpenSSL v1.1.1g EXE 63MB.
  2. Nainstalujte do počítače openssl-1.1.1g.
    Instalace musí být provedena podle standardní cesty, která je automaticky uvedena ve složce C: Program Files. Program se nainstaluje do složky OpenSSL-Win64.
  3. Chcete-li nastavit openSSL tak, jak potřebujete, existuje soubor openssl.cfg. Tento soubor se nachází v cestě C:\Program Files\OpenSSL-Win64bin, pokud jste nainstalovali openSSL podle popisu v předchozím odstavci. Přejděte do složky, kde je uložen openssl.cfg a otevřete tento soubor například pomocí programu Notepad++.
  4. Pravděpodobně tušíte, že certifikační autorita bude nějak konfigurována změnou obsahu souboru openssl.cfg, a máte naprostou pravdu. To vyžaduje přizpůsobení příkazu [ ca ]. V souboru openssl.cfg lze začátek textu, kde provedeme změny, najít jako: [ 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í musíme vytvořit adresář demoCA a podadresáře, jak je ukázáno v příkladu výše. A umístěte jej do tohoto adresáře podél cesty, která je uvedena v adresáři (mám /Users/username/bin/openSSLca/demoCA).

    Je velmi důležité správně napsat dir - to je cesta k adresáři, kde bude umístěno naše certifikační centrum. Tento adresář musí být umístěn v /Users (tedy v účtu nějakého uživatele). Pokud tento adresář umístíte např. do C: Program Files, systém soubor s nastavením openssl.cfg neuvidí (alespoň u mě to tak bylo).

    $dir - zde je nahrazena cesta zadaná v dir.

    Dalším důležitým bodem je vytvoření prázdného souboru index.txt, bez tohoto souboru nebudou příkazy „openSSL ca …“ fungovat.

    Musíte mít také sériový soubor, kořenový soukromý klíč (ca.key), kořenový certifikát (ca.crt). Postup získání těchto souborů bude popsán níže.

  6. Připojujeme šifrovací algoritmy poskytované společností Rutoken.
    Toto připojení probíhá v souboru openssl.cfg.

    • Nejprve si musíte stáhnout potřebné algoritmy Rutoken. Jedná se o soubory rtengine.dll, rtpkcs11ecp.dll.
      Chcete-li to provést, stáhněte si Rutoken SDK: www.rutoken.ru/developers/sdk.

      Rutoken SDK je vše, co existuje pro vývojáře, kteří chtějí Rutoken vyzkoušet. Existují samostatné příklady pro práci s Rutokenem v různých programovacích jazycích a jsou uvedeny některé knihovny. Naše knihovny rtengine.dll a rtpkcs11ecp.dll jsou umístěny v Rutoken sdk, v tomto pořadí, na umístění:

      sdk/openssl/rtengine/bin/windows-x86_64/lib/rtengine.dll
      sdk/pkcs11/lib/windows-x86_64/rtpkcs11ecp.dll

      Velmi důležitý bod. Knihovny rtengine.dll, rtpkcs11ecp.dll nefungují bez nainstalovaného ovladače pro Rutoken. Rutoken musí být také připojen k počítači. (Instalace všeho, co potřebujete pro Rutoken, naleznete v předchozí části článku habr.com/en/post/506450)

    • Knihovny rtengine.dll a rtpkcs11ecp.dll lze uchovávat kdekoli v uživatelském účtu.
    • Cesty k těmto knihovnám zapisujeme do openssl.cfg. Chcete-li to provést, otevřete soubor openssl.cfg, vložte řádek na začátek tohoto souboru:
      openssl_conf = openssl_def

      Na konec souboru je potř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=Aktiv%20Co.;model=Rutoken%20ECP
      default_algorithms = CIPHERS, DIGEST, PKEY, RAND
      

      dynamic_path - musíte zadat svou cestu ke knihovně rtengine.dll.
      MODULE_PATH - musíte nastavit cestu ke knihovně rtpkcs11ecp.dll.

  7. Přidání proměnných prostředí.

    Nezapomeňte přidat proměnnou prostředí, která určuje cestu ke konfiguračnímu souboru openssl.cfg. V mém případě byla vytvořena proměnná OPENSSL_CONF s cestou C:Program FilesOpenSSL-Win64binopenssl.cfg.

    V proměnné path musíte zadat cestu ke složce, kde se nachází openssl.exe, v mém případě je to: C: Program FilesOpenSSL-Win64bin.

  8. Nyní se můžete vrátit ke kroku 5 a vytvořit chybějící soubory pro adresář demoCA.
    1. První důležitý soubor, bez kterého nebude nic fungovat, je sériový. Toto je soubor bez přípony, jehož hodnota by měla být 01. Tento soubor si můžete vytvořit sami a do něj napsat 01. Můžete si jej také stáhnout z Rutoken SDK po cestě sdk/openssl/rtengine/samples/tool/demoCA /.
      Adresář demoCA obsahuje sériový soubor, což je přesně to, co potřebujeme.
    2. Vytvořte kořenový soukromý klíč.
      K tomu použijeme příkaz knihovny openSSL, který je nutné spustit přímo na příkazovém řádku:

      openssl genpkey -algorithm gost2012_256 -pkeyopt paramset:A -out ca.key

    3. Vytvoříme kořenový certifikát.
      Chcete-li to provést, použijte následující příkaz knihovny openSSL:

      openssl req -utf8 -x509 -key ca.key -out ca.crt

      Upozorňujeme, že pro vygenerování kořenového certifikátu je nutný kořenový soukromý klíč, který byl vygenerován v předchozím kroku. Proto musí být příkazový řádek spuštěn ve stejném adresáři.

    Vše má nyní všechny chybějící soubory pro kompletní konfiguraci adresáře demoCA. Vytvořené soubory umístěte do adresářů uvedených v bodě 5.

Budeme předpokládat, že po splnění všech 8 bodů je naše certifikační centrum plně nakonfigurováno.

V další části popíšu, jak budeme spolupracovat s certifikační autoritou, abychom splnili to, co bylo popsáno v předchozí část článku.

Zdroj: www.habr.com

Přidat komentář