Infraestructura de clave pública: Autoridad de certificación basada en OpenSSL y SQLite3 Utility (Postcryptum)

En uno de los comentarios enviados por garex , en respuesta a una declaración :
Pero hoy en la versión estándar de openssl no hay soporte para GOST R 34.11-2012 y GOST R 34.10-2012. Además, en la versión 1.1, el soporte de criptografía GOST está excluido de la entrega estándar ("El motor GOST estaba desactualizado y, por lo tanto, se ha eliminado").
se dijo:
¿Qué no le gusta a este que "fue eliminado"? github.com/gost-engine/engine
Ejemplo de compilación: github.com/rnixik/docker-openssl-gost/blob/master/Dockerfile

Se decidió probar esta versión de openssl como parte de CAFL63 CA. Usando el ejemplo de compilación especificado, openssl mismo y el motor GOST se ensamblaron e instalaron sin ningún problema (todo se probó en el entorno Linux e instalado en el directorio / usr / local / ssl). Naturalmente, para trabajar con la criptografía GOST (estamos hablando de GOST R 34.10-2012, GOST R 34.11-2012), debe registrar la conexión del motor gost.so en el archivo de configuración openssl.cnf:

. . # OpenSSL default section [openssl_def] engines = engine_section # Engine scetion [engine_section] gost = gost_section # Engine gost section [gost_section] engine_id = gost dynamic_path = /usr/local/ssl/lib/engines-1.1/gost.so default_algorithms = ALL CRYPT_PARAMS = id-Gost28147-89-CryptoPro-A-ParamSet . . . 

Puede verificar la conexión del motor invitado ejecutando el comando:

 bash-4.3$ /usr/local/ssl/bin/openssl ciphers . . . GOST2012-GOST8912-GOST8912:GOST2001-GOST89-GOST89 . . . bash-4.3$ 

Para ver los algoritmos hash basados ​​en GOST compatibles, simplemente ejecute el siguiente comando:

 bash-4.3$ /usr/local/ssl/bin/openssl list –digest-algorithms| grep md_gost md_gost12_256 md_gost12_512 md_gost94 bash-4.3$ 

Como puede ver, con el apoyo de la criptografía rusa en esta versión de openssl con el motor conectado, todo está bien.

Si conecta la utilidad openssl (Herramientas-> Configuración-> Sistema) en la CA creada anteriormente, entonces a primera vista funcionará. Podrá ver tanto las solicitudes como los certificados. En este caso, todos los campos incluidos en el DN (nombre distinguido) (TIN, PSRN, SNILS) se muestran correctamente. Pero aquí hay extensiones, como issuerSignTool, subjectSignTool y otras, openssl se niega a mencionar:

imagen

Cabe señalar que estas extensiones son una parte integral de SKEPP (verificación de clave de certificado calificado de firmas electrónicas), cuyos requisitos están aprobados por orden del Servicio Federal de Seguridad del 27 de diciembre de 2011 N 795.

El análisis de la utilidad openssl mostró que no es compatible con las extensiones isserSignTool, objectSignTools y otras introducidas por TK-26 para SKEPEP:
...
Error al cargar la sección de extensión de solicitud v3_req
139974322407168: error: 22097081: rutinas X509 V3: do_ext_nconf: extensión desconocida: crypto / x509v3 / v3_conf.c: 82:
139974322407168: error: 22098080: rutinas X509 V3: X509V3_EXT_nconf: error en extensión: crypto / x509v3 / v3_conf.c: 47: name = subjectSignTool, value = Nombre del sistema de protección de información criptográfica del usuario
...
Error al cargar la sección de extensión de solicitud v3_req
140154981721856: error: 22097081: rutinas X509 V3: do_ext_nconf: extensión desconocida: crypto / x509v3 / v3_conf.c: 82:
140154981721856: error: 22098080: rutinas X509 V3: X509V3_EXT_nconf: error en extensión: crypto / x509v3 / v3_conf.c: 47: name = subjectSignTool, value = Nombre del sistema de protección de información criptográfica del usuario
...
Error al cargar la sección de extensión cert_ext
140320065406720: error: 0D06407A: rutinas de codificación asn1: a2d_ASN1_OBJECT: primer número demasiado grande: crypto / asn1 / a_object.c: 61:
140320065406720: error: 2208206E: rutinas X509 V3: r2i_certpol: identificador de objeto no válido: crypto / x509v3 / v3_cpols.c: 135: sección :, nombre: KC1ClassSignTool, valor:
140320065406720: error: 22098080: rutinas X509 V3: X509V3_EXT_nconf: error en extensión: crypto / x509v3 / v3_conf.c: 47: name = certificatePolicies, value = KC1ClassSignTool, KC2ClassSignTool
..
En este sentido, CAFL63 CA también se negó a crear solicitudes y emitir certificados para openssl, ya que supervisó estrictamente el cumplimiento de los requisitos de CLEP:



Al mismo tiempo, a veces estos requisitos son redundantes, por ejemplo, cuando se usan certificados en el proceso educativo, para la gestión interna de documentos (firma, encriptación de documentos), para acceso https a sistemas corporativos (sitios, portales, etc.), llamado SSL- certificados).
En base a esto, se realizó una revisión de CAFL63. Ahora se hizo posible no completar los campos de extensión (Herramientas-> Configuración-> Sistema):



La utilidad CAFL63 le permite ver solicitudes de terceros (Certificados-> Ver un certificado de terceros o el botón "Ver X509 externo" en la pestaña "Certificados"), pero con el mismo inconveniente:



Esta revisión permite hoy utilizar CAFF63 CA con fines educativos, para organizar el flujo de trabajo corporativo, etc.

Eso es todo lo que quería decir en la posdata.

Source: https://habr.com/ru/post/es415423/


All Articles