Experiencia en el uso de la tecnología Rutoken para el registro y autorización de usuarios en el sistema (parte 2)

Buenas tardes Sigamos con este tema.La parte anterior se puede encontrar en el enlace.).

Hoy pasamos a la parte práctica. Comencemos configurando nuestra CA basada en la biblioteca criptográfica de código abierto openSSL. Este algoritmo ha sido probado con Windows 7.

Con openSSL instalado, podemos realizar diversas operaciones criptográficas (como crear claves y certificados) a través de la línea de comando.

El algoritmo de acciones es el siguiente:

  1. Descargue la distribución de instalación openssl-1.1.1g.
    openSSL tiene diferentes versiones. La documentación de Rutoken decía que se requiere openSSL versión 1.1.0 o posterior. Usé la versión openssl-1.1.1g. Puede descargar openSSL desde el sitio oficial, pero para una instalación más sencilla, necesita encontrar el archivo de instalación de Windows en la red. Hice esto por ti: slproweb.com/products/Win32OpenSSL.html
    Desplácese hacia abajo en la página y descargue el instalador Win64 OpenSSL v1.1.1g EXE 63MB.
  2. Instale openssl-1.1.1g en la computadora.
    La instalación debe realizarse según la ruta estándar, que se indica automáticamente en la carpeta C: Archivos de programa. El programa se instalará en la carpeta OpenSSL-Win64.
  3. Para configurar openSSL como lo necesita, existe el archivo openssl.cfg. Este archivo se encuentra en la ruta C:\Program Files\OpenSSL-Win64bin si instaló openSSL como se describe en el párrafo anterior. Vaya a la carpeta donde está almacenado openssl.cfg y abra este archivo usando, por ejemplo, Notepad++.
  4. Probablemente haya adivinado que la autoridad de certificación se configurará de alguna manera cambiando el contenido del archivo openssl.cfg, y tiene toda la razón. Esto requiere la personalización del comando [ca]. En el archivo openssl.cfg, el comienzo del texto donde realizaremos cambios lo podemos encontrar como: [ca].
  5. Ahora daré un ejemplo de una configuración con su descripció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
    

    Ahora necesitamos crear el directorio y los subdirectorios demoCA como se muestra en el ejemplo anterior. Y colóquelo en este directorio a lo largo de la ruta especificada en el directorio (tengo /Users/username/bin/openSSLca/demoCA).

    Es muy importante escribir correctamente dir: esta es la ruta al directorio donde se ubicará nuestro centro de certificación. Este directorio debe estar ubicado en /Users (es decir, en la cuenta de algún usuario). Si coloca este directorio, por ejemplo, en C: Archivos de programa, el sistema no verá el archivo con la configuración de openssl.cfg (al menos así fue para mí).

    $dir: aquí se sustituye la ruta especificada en dir.

    Otro punto importante es crear un archivo index.txt vacío, sin este archivo los comandos “openSSL ca…” no funcionarán.

    También necesita tener un archivo serial, una clave privada raíz (ca.key), un certificado raíz (ca.crt). El proceso de obtención de estos archivos se describirá a continuación.

  6. Conectamos los algoritmos de cifrado proporcionados por Rutoken.
    Esta conexión se realiza en el archivo openssl.cfg.

    • En primer lugar, debe descargar los algoritmos Rutoken necesarios. Estos son los archivos rtengine.dll, rtpkcs11ecp.dll.
      Para hacer esto, descargue el SDK de Rutoken: www.rutoken.ru/developers/sdk.

      El SDK de Rutoken es todo lo que hay para los desarrolladores que quieran probar Rutoken. Hay ejemplos separados para trabajar con Rutoken en diferentes lenguajes de programación y se presentan algunas bibliotecas. Nuestras bibliotecas rtengine.dll y rtpkcs11ecp.dll se encuentran en el SDK de Rutoken, respectivamente, en la ubicación:

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

      Un punto muy importante. Las bibliotecas rtengine.dll, rtpkcs11ecp.dll no funcionan sin el controlador instalado para Rutoken. Además, Rutoken debe estar conectado a la computadora. (para instalar todo lo necesario para Rutoken, consulte la parte anterior del artículo habr.com/es/post/506450)

    • Las bibliotecas rtengine.dll y rtpkcs11ecp.dll se pueden guardar en cualquier lugar de la cuenta de usuario.
    • Escribimos las rutas a estas bibliotecas en openssl.cfg. Para hacer esto, abra el archivo openssl.cfg, coloque la línea al principio de este archivo:
      openssl_conf = openssl_def

      Al final del archivo debe agregar:

      [ 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
      

      ruta_dinámica: debe especificar su ruta a la biblioteca rtengine.dll.
      MODULE_PATH: debe escribir su ruta a la biblioteca rtpkcs11ecp.dll.

  7. Agregar variables de entorno.

    Asegúrese de agregar una variable de entorno que especifique la ruta al archivo de configuración openssl.cfg. En mi caso, la variable OPENSSL_CONF se creó con la ruta C:Program FilesOpenSSL-Win64binopenssl.cfg.

    En la variable ruta debes especificar la ruta a la carpeta donde se encuentra openssl.exe, en mi caso es: C: Archivos de programaOpenSSL-Win64bin.

  8. Ahora puede volver al paso 5 y crear los archivos que faltan para el directorio demoCA.
    1. El primer archivo importante sin el cual nada funcionará es el serial. Este es un archivo sin extensión, cuyo valor debe ser 01. Puede crear este archivo usted mismo y escribir 01 en su interior. También puede descargarlo desde el SDK de Rutoken a través de la ruta sdk/openssl/rtengine/samples/tool/demoCA. /.
      El directorio demoCA contiene el archivo serial, que es exactamente lo que necesitamos.
    2. Cree una clave privada raíz.
      Para hacer esto, usaremos el comando de la biblioteca openSSL, que debe ejecutarse directamente en la línea de comando:

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

    3. Creamos un certificado raíz.
      Para hacer esto, use el siguiente comando de la biblioteca openSSL:

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

      Tenga en cuenta que la clave privada raíz, que se generó en el paso anterior, es necesaria para generar el certificado raíz. Por lo tanto, la línea de comando debe iniciarse en el mismo directorio.

    Todo ahora tiene todos los archivos que faltan para la configuración completa del directorio demoCA. Coloque los archivos creados en los directorios indicados en el punto 5.

Asumiremos que después de completar los 8 puntos, nuestro centro de certificación está completamente configurado.

En la siguiente parte, describiré cómo trabajaremos con la autoridad de certificación para lograr lo que se describió en la parte anterior del artículo.

Fuente: habr.com

Añadir un comentario