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

Buen día!

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

Utilizando una autoridad de certificación local, podemos emitir certificados y también verificar las firmas en estos certificados.

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

Veremos cómo recibir una solicitud de certificado en el próximo artículo, y en este artículo quiero brindar los comandos principales de la autoridad de certificación que nos ayudarán a completar nuestra tarea en el lado del backend.

Entonces primero tenemos que crear un certificado. Para ello utilizamos el comando:

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

ca es el comando openSSL que se relaciona con la autoridad de certificación,
-batch: cancela las solicitudes de confirmación al generar un certificado.
user.csr: solicitud para crear un certificado (archivo en formato .csr).
user.crt - certificado (resultado del comando).

Para que este comando funcione, la autoridad de certificación debe estar configurada exactamente como se describe en la parte anterior del artículo. De lo contrario, deberá especificar adicionalmente la ubicación del certificado raíz de la autoridad de certificación.

Comando de verificación de certificado:

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

cms es un comando openSSL que se utiliza para firmar, verificar, cifrar datos y otras operaciones criptográficas utilizando openSSL.

-verificar - en este caso verificamos el certificado.

authenticate.cms: un archivo que contiene datos firmados con el certificado emitido por el comando anterior.

-informar a PEM: se utiliza el formato PEM.

-CAfile /Users/……/demoCA/ca.crt: ruta al certificado raíz. (sin esto el comando no me funcionó, aunque las rutas a ca.crt estaban escritas en el archivo openssl.cfg)

-out data.file: envío los datos descifrados al archivo data.file.

El algoritmo para utilizar una autoridad de certificación en el backend es el siguiente:

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

  • Autorización de usuario:
    1. Recibimos datos firmados del cliente y los guardamos en el archivo authenticate.cms.
    2. Guarde 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. Recibimos un archivo con datos descifrados data.file.
    3. Leemos data.file y verificamos la validez de estos datos. Se describe qué verificar exactamente. en el primer artículo. Si los datos son válidos, la autorización del usuario se considera exitosa.

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

En el próximo artículo veremos cómo trabajar con el complemento Retoken.

Gracias por su atención!

Fuente: habr.com

Añadir un comentario