Experiencia no uso da tecnoloxía Rutoken para rexistrar e autorizar usuarios no sistema (parte 2)

Boas tardes Seguimos con este temaA parte anterior pódese atopar na ligazón).

Hoxe pasamos á parte práctica. Comecemos configurando a nosa CA baseada na biblioteca criptográfica de código aberto openSSL. Este algoritmo foi probado usando Windows 7.

Con openSSL instalado, podemos realizar varias operacións criptográficas (como crear claves e certificados) a través da liña de comandos.

O algoritmo de accións é o seguinte:

  1. Descarga a distribución de instalación openssl-1.1.1g.
    openSSL ten diferentes versións. A documentación de Rutoken indica que é necesaria a versión 1.1.0 ou posterior de openSSL. Usei a versión openssl-1.1.1g. Podes descargar openSSL desde o sitio oficial, pero para unha instalación máis sinxela, necesitas atopar o ficheiro de instalación de Windows na rede. Fixen isto por ti: slproweb.com/products/Win32OpenSSL.html
    Desprácese cara abaixo na páxina e descargue o instalador Win64 OpenSSL v1.1.1g EXE 63MB.
  2. Instala openssl-1.1.1g no ordenador.
    A instalación debe realizarse segundo o camiño estándar, que se indica automaticamente no cartafol C: Arquivos de programas. O programa instalarase no cartafol OpenSSL-Win64.
  3. Para configurar openSSL como o necesitas, hai o ficheiro openssl.cfg. Este ficheiro atópase na ruta C:\Program Files\OpenSSL-Win64bin se instalou openSSL como se describe no parágrafo anterior. Vaia ao cartafol onde se almacena openssl.cfg e abra este ficheiro usando, por exemplo, Notepad++.
  4. Probablemente adiviñaches que a autoridade de certificación se configurará dalgún xeito cambiando o contido do ficheiro openssl.cfg e tes toda a razón. Isto require a personalización do comando [ ca ]. No ficheiro openssl.cfg, o inicio do texto onde faremos cambios pódese atopar como: [ ca ].
  5. Agora vou dar un exemplo dunha configuración coa súa descrición:
    [ 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
    

    Agora necesitamos crear o directorio e os subdirectorios demoCA como se mostra no exemplo anterior. E colócao neste directorio ao longo da ruta que se especifica en dir (teño /Users/username/bin/openSSLca/demoCA).

    É moi importante escribir dir correctamente: este é o camiño ao directorio onde estará o noso centro de certificación. Este directorio debe estar situado en /Usuarios (é dicir, na conta dalgún usuario). Se colocas este directorio, por exemplo, en C: Ficheiros de programas, o sistema non verá o ficheiro coa configuración openssl.cfg (polo menos foi así para min).

    $dir - o camiño especificado en dir substitúese aquí.

    Outro punto importante é crear un ficheiro index.txt baleiro, sen este ficheiro os comandos "openSSL ca..." non funcionarán.

    Tamén precisa ter un ficheiro de serie, unha clave privada raíz (ca.key), un certificado raíz (ca.crt). O proceso de obtención destes ficheiros describirase a continuación.

  6. Conectamos os algoritmos de cifrado proporcionados por Rutoken.
    Esta conexión ten lugar no ficheiro openssl.cfg.

    • Primeiro de todo, cómpre descargar os algoritmos Rutoken necesarios. Estes son os ficheiros rtengine.dll, rtpkcs11ecp.dll.
      Para iso, descarga o SDK de Rutoken: www.rutoken.ru/developers/sdk.

      O Rutoken SDK é todo o que hai para desenvolvedores que queiran probar Rutoken. Hai dous exemplos separados para traballar con Rutoken en diferentes linguaxes de programación e preséntanse algunhas bibliotecas. As nosas bibliotecas rtengine.dll e rtpkcs11ecp.dll están situadas no sdk de Rutoken, respectivamente, na localización:

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

      Un punto moi importante. As bibliotecas rtengine.dll, rtpkcs11ecp.dll non funcionan sen o controlador instalado para Rutoken. Tamén Rutoken debe estar conectado ao ordenador. (para instalar todo o que precisa para Rutoken, consulte a parte anterior do artigo habr.com/en/post/506450)

    • As bibliotecas rtengine.dll e rtpkcs11ecp.dll pódense gardar en calquera lugar da conta de usuario.
    • Escribimos os camiños a estas bibliotecas en openssl.cfg. Para iso, abra o ficheiro openssl.cfg, poña a liña ao comezo deste ficheiro:
      openssl_conf = openssl_def

      Ao final do ficheiro cómpre engadir:

      [ 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: debes especificar o teu camiño á biblioteca rtengine.dll.
      MODULE_PATH: debes escribir o teu camiño á biblioteca rtpkcs11ecp.dll.

  7. Engadindo variables de ambiente.

    Asegúrese de engadir unha variable de ambiente que especifique o camiño ao ficheiro de configuración openssl.cfg. No meu caso, a variable OPENSSL_CONF creouse co camiño C:Program FilesOpenSSL-Win64binopenssl.cfg.

    Na variable de ruta, debes especificar o camiño ao cartafol onde se atopa openssl.exe, no meu caso é: C: Arquivos de programaOpenSSL-Win64bin.

  8. Agora podes volver ao paso 5 e crear os ficheiros que faltan para o directorio demoCA.
    1. O primeiro ficheiro importante sen o cal nada funcionará é a serie. Este é un ficheiro sen extensión, cuxo valor debería ser 01. Podes crear este ficheiro ti mesmo e escribir 01 dentro. Tamén podes descargalo desde o SDK de Rutoken pola ruta sdk/openssl/rtengine/samples/tool/demoCA /.
      O directorio demoCA contén o ficheiro en serie, que é exactamente o que necesitamos.
    2. Crea unha clave privada raíz.
      Para iso, utilizaremos o comando da biblioteca openSSL, que debe executarse directamente na liña de comandos:

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

    3. Creamos un certificado raíz.
      Para iso, use o seguinte comando da biblioteca openSSL:

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

      Teña en conta que a clave privada raíz, que se xerou no paso anterior, é necesaria para xerar o certificado raíz. Polo tanto, a liña de comandos debe iniciarse no mesmo directorio.

    Agora todo ten todos os ficheiros que faltan para a configuración completa do directorio demoCA. Colocar os ficheiros creados nos directorios indicados no punto 5.

Asumiremos que despois de completar os 8 puntos, o noso centro de certificación está totalmente configurado.

Na seguinte parte, describirei como traballaremos coa autoridade de certificación para cumprir o descrito en a parte anterior do artigo.

Fonte: www.habr.com

Engadir un comentario