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

¡Buen día!

En la parte anterior Hemos creado con éxito nuestro centro de certificación. ¿Cómo puede ser útil para nuestros propósitos?

Con un centro de certificación local podemos emitir certificados y también verificar firmas de dichos certificados.

Al emitir un certificado al usuario, el centro de certificación utiliza una solicitud especial para la emisión del certificado Pkcs#10, que tiene el formato de archivo '.csr'. Esta solicitud contiene una secuencia codificada que el centro de certificación sabe cómo analizar correctamente. La solicitud incluye tanto la clave pública del usuario como los datos para crear el certificado (un array asociativo con los datos del usuario).

La forma de obtener la solicitud de emisión de certificado la veremos en el siguiente artículo, pero en este quiero presentar los principales comandos del centro de certificación que nos ayudarán a cumplir nuestra tarea en el lado del backend.

Así que, primero debemos crear el certificado. Para esto, utilizamos el comando:

openssl ca -batch -in user.csr -out user.crt

ca — es el comando de openSSL que corresponde al centro de certificación,
-batch — anula las solicitudes de confirmación al generar el certificado.
user.csr — solicitud para crear el certificado (archivo de formato .csr).
user.crt — certificado (resultado obtenido del comando).

Para que este comando funcione, el centro de certificación debe estar configurado exactamente como se describe en la parte anterior del artículo. De lo contrario, tendré que especificar adicionalmente la ubicación del certificado raíz del centro de certificación.

Comando para verificar el certificado:

openssl cms -verify -in authenticate.cms -inform PEM -CAfile /Users/……/demoCA/ca.crt -out data.file

cms — es el comando de openSSL que se utiliza para firmar, verificar, cifrar datos y otras operaciones criptográficas mediante openSSL.

-verify — en este caso, realizamos la verificación del certificado.

authenticate.cms — archivo que contiene los datos firmados por el certificado que fue emitido por el comando anterior.

-inform PEM — se utiliza el formato PEM.

-CAfile /Users/……/demoCA/ca.crt — ruta al certificado raíz. (sin esto, el comando no funcionó, aunque las rutas al ca.crt están indicadas en el archivo openssl.cfg)

-out data.file — los datos descifrados los envía al archivo data.file.

El algoritmo de aplicación del centro de certificación en el lado del backend es el siguiente:

  • Registro de usuario:
    1. Recibimos la solicitud para crear un certificado y lo guardamos en el archivo user.csr.
    2. Guardamos el primer comando de este artículo en un archivo con la extensión .bat o .cmd. Ejecutamos este archivo desde el código, habiendo guardado previamente la solicitud para crear el certificado en el archivo user.csr. Obtenemos el archivo del certificado user.crt.
    3. Leemos el archivo user.crt y lo enviamos al cliente.

  • Autenticación del usuario:
    1. Recibimos los datos firmados del cliente y los guardamos en el archivo authenticate.cms.
    2. Guardamos el segundo comando de este artículo en un archivo con la extensión .bat o .cmd. Ejecutamos este archivo desde el código, habiendo guardado previamente los datos firmados del servidor en authenticate.cms. Obtenemos un archivo con los datos desencriptados data.file.
    3. Leemos data.file y verificamos la validez de estos datos. Lo que se debe verificar está descrito en el primer artículo. Si los datos son válidos, la autenticación del usuario se considera exitosa.

Para implementar estos algoritmos, se puede usar cualquier lenguaje de programación que se utilice para escribir el backend.

En el siguiente artículo, analizaremos cómo trabajar con el plugin Rutoken.

¡Gracias por su atención!

Fuente: habr.com

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster