¡Buenos días! Continuemos explorando este tema ().
Hoy pasaremos a la parte práctica. Comenzaremos configurando nuestra propia autoridad certificadora basada en una biblioteca criptográfica de código abierto completa, openSSL. Este algoritmo ha sido probado utilizando Windows 7.
Una vez instalado openSSL, podremos realizar diversas operaciones criptográficas (por ejemplo, la creación de claves y certificados) a través del símbolo del sistema.
El procedimiento a seguir es el siguiente:
- Descargamos el instalador openssl-1.1.1g.
Existen diferentes versiones de openSSL. En la documentación de Rutoken se mencionó que se necesita la versión openSSL 1.1.0 o superior. Yo utilicé la versión openssl-1.1.1g. Se puede descargar openSSL desde el sitio oficial, pero para una instalación más sencilla es recomendable encontrar el archivo de instalación para Windows en Internet. Yo lo hice por ti:
Es necesario desplazarse hacia abajo en la página y descargar Win64 OpenSSL v1.1.1g EXE 63MB Installer. - Instalamos openssl-1.1.1g en el ordenador.
La instalación debe realizarse en la ruta estándar, que se indica automáticamente en la carpeta C:Program Files. El programa se instalará en la carpeta OpenSSL-Win64. - Para configurar openSSL según tus necesidades, existe el archivo openssl.cfg. Este archivo se encuentra en la ruta C:Program FilesOpenSSL-Win64bin si instalaste openSSL como se indicó en el punto anterior. Vamos a la carpeta donde se almacena openssl.cfg y abrimos este archivo utilizando, por ejemplo, Notepad++.
- Probablemente ya dedujiste que la configuración de la autoridad certificadora se realizará mediante cambios en el contenido del archivo openssl.cfg, y estás absolutamente correcto. Para ello, es necesario configurar el comando [ ca ]. En el archivo openssl.cfg, se puede encontrar el inicio del texto donde realizaremos cambios como: [ ca ].
- Ahora daré un ejemplo de 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_certAhora es necesario crear el directorio demoCA y las subcarpetas, como se muestra en el ejemplo anterior. Y ubicar en este directorio según la ruta que se indica en dir (en mi caso /Users/username/bin/openSSLca/demoCA).
Es muy importante especificar correctamente el dir: es la ruta al directorio donde estará nuestro centro de certificación. Este directorio debe estar necesariamente en /Users (es decir, en la cuenta de algún usuario). Si se coloca este directorio, por ejemplo, en C:Program Files, el sistema no podrá encontrar el archivo de configuración openssl.cfg (al menos eso me pasó a mí).
$dir — aquí se introduce la ruta que se indica en dir.
Otro punto importante es crear un archivo vacío index.txt; sin este archivo, los comandos «openSSL ca …» no funcionarán.
También es necesario tener el archivo serial, la clave privada raíz (ca.key) y el certificado raíz (ca.crt). El proceso para obtener estos archivos se describirá más adelante.
- Conectamos los algoritmos de cifrado proporcionados por Rutoken.
Esta conexión ocurre en el archivo openssl.cfg.- Primero, se requiere descargar los algoritmos necesarios de Rutoken. Estos son los archivos rtengine.dll, rtpkcs11ecp.dll.
Para ello, descargamos el SDK de Rutoken: .El SDK de Rutoken es todo lo que hay para los desarrolladores que desean probar Rutoken. Allí hay ejemplos separados para trabajar con Rutoken en diferentes lenguajes de programación, así como algunas bibliotecas. Nuestras bibliotecas rtengine.dll y rtpkcs11ecp.dll se encuentran en el SDK de Rutoken en la siguiente ubicación:
sdk/openssl/rtengine/bin/windows-x86_64/lib/rtengine.dll
sdk/pkcs11/lib/windows-x86_64/rtpkcs11ecp.dllEs un punto muy importante. Las bibliotecas rtengine.dll, rtpkcs11ecp.dll no funcionan sin el controlador instalado para Rutoken. Además, el Rutoken debe estar conectado a la computadora. (para la instalación de todo lo necesario para Rutoken, consulta la parte anterior del artículo )
- Las bibliotecas rtengine.dll y rtpkcs11ecp.dll se pueden mantener en cualquier lugar de la cuenta de usuario.
- Especificamos las rutas a estas bibliotecas en openssl.cfg. Para ello, abrimos el archivo openssl.cfg, y al inicio de este archivo se debe colocar la línea:
openssl_conf = openssl_defAl final del archivo, es necesario 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=AktivCo.;model=RutokenECP default_algorithms = CIPHERS, DIGEST, PKEY, RANDdynamic_path – es necesario especificar su propia ruta a la biblioteca rtengine.dll.
MODULE_PATH — es necesario especificar su propia ruta a la biblioteca rtpkcs11ecp.dll.
- Primero, se requiere descargar los algoritmos necesarios de Rutoken. Estos son los archivos rtengine.dll, rtpkcs11ecp.dll.
- Agregamos variables de entorno.
Es necesario agregar una variable de entorno que indique la ruta al archivo de configuración openssl.cfg. En mi caso, se creó la variable OPENSSL_CONF con la ruta C:Program FilesOpenSSL-Win64binopenssl.cfg.
En la variable path, es necesario indicar la ruta a la carpeta donde se encuentra openssl.exe, en mi caso: C:Program FilesOpenSSL-Win64bin.
- Ahora se puede volver al punto 5 y crear los archivos que faltan para el directorio demoCA.
- El primer archivo importante sin el cual nada funcionará es serial. Este archivo no tiene extensión y su valor debe ser 01. Se puede crear este archivo manualmente y escribir dentro 01. También se puede descargar desde el SDK de RUTOKEN en la ruta sdk/openssl/rtengine/samples/tool/demoCA/.
En el directorio demoCA se encuentra el archivo serial, que es el que necesitamos. - Creamos la clave privada raíz.
Para ello, utilizaremos el comando de la biblioteca openSSL, que debe ejecutarse directamente en la línea de comandos:openssl genpkey -algorithm gost2012_256 -pkeyopt paramset:A -out ca.key - Creamos el certificado raíz.
Para ello, utilizaremos el siguiente comando de la biblioteca openSSL:openssl req -utf8 -x509 -key ca.key -out ca.crtTenga en cuenta que se requiere la clave privada raíz que se creó en el paso anterior para generar el certificado raíz. Por lo tanto, la línea de comandos debe ejecutarse en el mismo directorio.
Ahora tenemos todos los archivos faltantes para la configuración completa del directorio demoCA. Coloque los archivos creados en los directorios que se indican en el punto 5.
- El primer archivo importante sin el cual nada funcionará es serial. Este archivo no tiene extensión y su valor debe ser 01. Se puede crear este archivo manualmente y escribir dentro 01. También se puede descargar desde el SDK de RUTOKEN en la ruta sdk/openssl/rtengine/samples/tool/demoCA/.
Consideraremos que, después de completar los 8 puntos, nuestra autoridad certificadora está completamente configurada.
En la siguiente parte, explicaré cómo trabajaremos con la autoridad certificadora para realizar lo que se describió en .
Fuente: habr.com
