Pengalaman menggunakan teknologi Rutoken untuk mendaftar dan membenarkan pengguna dalam sistem (bahagian 2)

Selamat petang Mari kita teruskan dengan topik iniBahagian sebelumnya boleh didapati di pautan).

Hari ini kita beralih ke bahagian praktikal. Mari mulakan dengan menyediakan CA kami berdasarkan openSSL perpustakaan kriptografi sumber terbuka penuh. Algoritma ini telah diuji menggunakan windows 7.

Dengan openSSL dipasang, kami boleh melakukan pelbagai operasi kriptografi (seperti mencipta kunci dan sijil) melalui baris arahan.

Algoritma tindakan adalah seperti berikut:

  1. Muat turun pengedaran pemasangan openssl-1.1.1g.
    openSSL mempunyai versi yang berbeza. Dokumentasi untuk Rutoken mengatakan bahawa openSSL versi 1.1.0 atau lebih baru diperlukan. Saya menggunakan versi openssl-1.1.1g. Anda boleh memuat turun openSSL dari tapak rasmi, tetapi untuk pemasangan yang lebih mudah, anda perlu mencari fail pemasangan untuk tingkap di internet. Saya melakukan ini untuk anda: slproweb.com/products/Win32OpenSSL.html
    Tatal ke bawah halaman dan muat turun Win64 OpenSSL v1.1.1g EXE 63MB Installer.
  2. Pasang openssl-1.1.1g pada komputer.
    Pemasangan mesti dijalankan mengikut laluan standard, yang secara automatik ditunjukkan dalam folder C: Program Files. Program ini akan dipasang dalam folder OpenSSL-Win64.
  3. Untuk menyediakan openSSL seperti yang anda perlukan, terdapat fail openssl.cfg. Fail ini terletak di laluan C:Program FilesOpenSSL-Win64bin jika anda memasang openSSL seperti yang diterangkan dalam perenggan sebelumnya. Pergi ke folder tempat openssl.cfg disimpan dan buka fail ini menggunakan, sebagai contoh, Notepad++.
  4. Anda mungkin meneka bahawa pihak berkuasa pensijilan akan dikonfigurasikan entah bagaimana dengan menukar kandungan fail openssl.cfg, dan anda betul sekali. Ini memerlukan penyesuaian perintah [ ca ]. Dalam fail openssl.cfg, permulaan teks di mana kita akan membuat perubahan boleh didapati sebagai: [ ca ].
  5. Sekarang saya akan memberikan contoh tetapan dengan penerangannya:
    [ 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
    

    Sekarang kita perlu mencipta direktori demoCA dan subdirektori seperti yang ditunjukkan dalam contoh di atas. Dan letakkannya dalam direktori ini di sepanjang laluan yang ditentukan dalam dir (saya ada /Users/username/bin/openSSLca/demoCA).

    Adalah sangat penting untuk mengeja dir dengan betul - ini ialah laluan ke direktori tempat pusat pensijilan kami akan ditempatkan. Direktori ini mesti terletak di /Users (iaitu, dalam akaun sesetengah pengguna). Jika anda meletakkan direktori ini, sebagai contoh, dalam C: Program Files, sistem tidak akan melihat fail dengan tetapan openssl.cfg (sekurang-kurangnya ia adalah seperti itu untuk saya).

    $dir - laluan yang dinyatakan dalam dir digantikan di sini.

    Satu lagi perkara penting ialah membuat fail index.txt kosong, tanpa fail ini arahan "openSSL ca ..." tidak akan berfungsi.

    Anda juga perlu mempunyai fail bersiri, kunci persendirian akar (ca.key), sijil akar (ca.crt). Proses mendapatkan fail ini akan diterangkan di bawah.

  6. Kami menyambungkan algoritma penyulitan yang disediakan oleh Rutoken.
    Sambungan ini berlaku dalam fail openssl.cfg.

    • Pertama sekali, anda perlu memuat turun algoritma Rutoken yang diperlukan. Ini ialah fail rtengine.dll, rtpkcs11ecp.dll.
      Untuk melakukan ini, muat turun Rutoken SDK: www.rutoken.ru/developers/sdk.

      SDK Rutoken adalah semua yang ada untuk pembangun yang ingin mencuba Rutoken. Terdapat kedua-dua contoh berasingan untuk bekerja dengan Rutoken dalam bahasa pengaturcaraan yang berbeza, dan beberapa perpustakaan dibentangkan. Perpustakaan kami rtengine.dll dan rtpkcs11ecp.dll masing-masing terletak di Rutoken sdk, di lokasi:

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

      Satu perkara yang sangat penting. Perpustakaan rtengine.dll, rtpkcs11ecp.dll tidak berfungsi tanpa pemacu yang dipasang untuk Rutoken. Juga Rutoken mesti disambungkan ke komputer. (untuk memasang semua yang anda perlukan untuk Rutoken, lihat bahagian sebelumnya artikel habr.com/ms/post/506450)

    • Pustaka rtengine.dll dan rtpkcs11ecp.dll boleh disimpan di mana-mana dalam akaun pengguna.
    • Kami menulis laluan ke perpustakaan ini dalam openssl.cfg. Untuk melakukan ini, buka fail openssl.cfg, letakkan baris pada permulaan fail ini:
      openssl_conf = openssl_def

      Pada akhir fail anda perlu menambah:

      [ 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 - anda mesti menentukan laluan anda ke perpustakaan rtengine.dll.
      MODULE_PATH - anda perlu menulis laluan anda ke perpustakaan rtpkcs11ecp.dll.

  7. Menambah pembolehubah persekitaran.

    Pastikan anda menambah pembolehubah persekitaran yang menentukan laluan ke fail konfigurasi openssl.cfg. Dalam kes saya, pembolehubah OPENSSL_CONF telah dicipta dengan laluan C:Program FilesOpenSSL-Win64binopenssl.cfg.

    Dalam pembolehubah laluan, anda mesti menentukan laluan ke folder di mana openssl.exe terletak, dalam kes saya ia adalah: C: Program FilesOpenSSL-Win64bin.

  8. Kini anda boleh kembali ke langkah 5 dan mencipta fail yang hilang untuk direktori demoCA.
    1. Fail penting pertama yang tanpanya tiada apa yang akan berfungsi adalah bersiri. Ini ialah fail tanpa sambungan, yang nilainya hendaklah 01. Anda boleh mencipta fail ini sendiri dan menulis 01 di dalamnya. Anda juga boleh memuat turunnya daripada Rutoken SDK di sepanjang laluan sdk/openssl/rtengine/samples/tool/demoCA /.
      Direktori demoCA mengandungi fail bersiri, iaitu apa yang kami perlukan.
    2. Buat kunci peribadi akar.
      Untuk melakukan ini, kami akan menggunakan arahan perpustakaan openSSL, yang mesti dijalankan terus pada baris arahan:

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

    3. Kami membuat sijil akar.
      Untuk melakukan ini, gunakan arahan perpustakaan openSSL berikut:

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

      Sila ambil perhatian bahawa kunci persendirian akar, yang dijana dalam langkah sebelumnya, diperlukan untuk menjana sijil akar. Oleh itu, baris arahan mesti dilancarkan dalam direktori yang sama.

    Semuanya kini mempunyai semua fail yang hilang untuk konfigurasi lengkap direktori demoCA. Letakkan fail yang dibuat dalam direktori yang ditunjukkan dalam titik 5.

Kami akan menganggap bahawa selepas melengkapkan kesemua 8 mata, pusat pensijilan kami dikonfigurasikan sepenuhnya.

Dalam bahagian seterusnya, saya akan menerangkan cara kami akan bekerjasama dengan pihak berkuasa pensijilan untuk mencapai perkara yang diterangkan dalam bahagian sebelumnya artikel.

Sumber: www.habr.com

Tambah komen