GNU/Linux >> Tutoriales Linux >  >> Linux

La verificación de la firma falló en la clave pública de SPKAC:solucione el error de OpenCA

Después de instalar OpenCA y configurar la Autoridad de certificación (CA), encontré un error:"La verificación de firma falló en la clave pública de SPKAC ” mientras firma la solicitud de certificado de entidad final en la máquina CA.

Error while issuing Certificate to David (filename: /home/openca/var/openca/tmp/4229D72DA1BA34B416B9.req).

OpenCA::OpenSSL returns errocode 7731075 (OpenCA::OpenSSL->issueCert: OpenSSL fails (7777067). Using configuration from /home/openca/etc/openca/openssl/openssl/User.conf
Check that the SPKAC request matches the signature
Signature verification failed on SPKAC public key
140250398984096:error:0D06407A:asn1 encoding routines:a2d_ASN1_OBJECT:first num too 
large:a_object.c:108:
140250398984096:error:0D0C50A1:asn1 encoding routines:ASN1_item_verify:unknown message digest algorithm:a_verify.c:206:
error in ca
).

Estoy usando openca-base-1.5.0 y openca-tools-1.3.0

Depuración:

  • Habilité la opción de depuración en OpenCA y encontré el comando OpenSSL que firma el certificado de usuario. A continuación se muestra la instantánea de la depuración.
OpenCA::OpenSSL->_execute_command: ca -batch -config /home/openca/etc/openca/openssl/openssl/User.conf -keyfile /home/openca/var/openca/crypto/keys/cakey.pem -passin env:pwd -extfile /home/openca/var/openca/tmp/User.ext -preserveDN -subj "/O=OpenCA Labs/OU=Users/CN=David" -spkac /home/openca/var/openca/tmp/4229D72DA1BA34B416B9.req

Más de la depuración...

OpenCA::OpenSSL->setError: errno: 7731075
OpenCA::OpenSSL->setError: errval: OpenCA::OpenSSL->issueCert: OpenSSL fails (7777067). Using configuration from /home/openca/etc/openca/openssl/openssl/User.conf
Check that the SPKAC request matches the signature
signature verification failed on SPKAC public key
140030475425696:error:0D06407A:asn1 encoding routines:a2d_ASN1_OBJECT:first num too large:a_object.c:108:
140030475425696:error:0D0C50A1:asn1 encoding routines:ASN1_item_verify:unknown message digest algorithm:a_verify.c:206:
error in ca

El error “la verificación de la firma falló en la clave pública SPKAC ” dice claramente que el problema es al firmar la clave pública SPKAC:la solicitud se generó en la ventana del navegador de los usuarios como se muestra a continuación:

La solicitud generada por el navegador consta de la clave pública y la firma de SPKAC. El SPKAC probablemente usa MD5 en su firma. Eso es inseguro y OpenSSL no verifica las firmas que usan MD5 por defecto.

Entonces, ¿cómo le decimos a OpenSSL que acepte solicitudes que usan MD5? Así es como es.

Cómo solucionar el error de verificación de firma en la clave pública SPKAC

Establezca la variable de entorno OPENSSL_ENABLE_MD5_VERIFY como solución alternativa para permitir que OpenSSL firme solicitudes que usan MD5. Como OpenCA usa sesiones, no puede simplemente configurar la variable de entorno en la línea de comando. Debe configurarlo programáticamente, de modo que cada vez que OpenCA use el comando OpenSSL para firmar, debe configurarse.

Por lo tanto, establezca la variable de entorno OPENSSL_ENABLE_MD5_VERIFY en /home/openca/lib/openca/perl_modules/perl5/x86_64-linux-thread-multi/OpenCA/OpenSSL.pm archivo:

Busque la Línea:# ejecutando el comando OpenSSL

A continuación se muestra el código, donde ocurre la firma del certificado.

$self->_debug ("issueCert: openssl=$command");
 $ENV{'pwd'} = "$passwd";
 $ret = $self->_execute_command (COMMAND => $command, KEY_USAGE => $engine);
 delete ($ENV{'pwd'});
 unlink ($reqfile) if ($reqdata);
 if( not $ret ) {
 $self->setError (7731075,
 $self->{gettext} ("OpenCA::OpenSSL->issueCert: OpenSSL fails (__ERRNO__). __ERRVAL__",
 "__ERRNO__", $self->errno,
 "__ERRVAL__", $self->errval));
 return undef;
 }

Antes de ejecutar el código anterior, debe configurar la variable de entorno como se muestra a continuación:

$ENV{OPENSSL_ENABLE_MD5_VERIFY} = 0;

Ahora reinicie el demonio OpenCA y firme su certificado de usuario. Debería funcionar.

Vía Bugzilla


Linux
  1. ¿Cómo corregir el error "Error en la recuperación de la clave GPG" durante la instalación de YUM?

  2. Cómo corregir el error de OpenStack:¿no se pudo eliminar la red? [Resuelto]

  3. Solucionar error:la comprobación de libpci falló. Deshabilitar la capacidad de asignación de dispositivos KVM [resuelto]

  4. Instalación de R desde el repositorio CRAN Ubuntu:sin error de clave pública

  5. kvm:la verificación del módulo falló:falta la firma y/o la clave requerida - núcleo corrupto

Cómo reparar el error "paquete no válido o dañado (firma PGP)" en Arch Linux

Corrección del error "Vagrant no se pudo inicializar en una etapa muy temprana"

Cómo corregir el error de error de carga de proveedores de KDE Discover

La corrección no se pudo descargar el error de los archivos del paquete en Ubuntu

Solución:error:no se pudieron descargar los metadatos para el flujo de aplicaciones del repositorio:CentOS 8

Cómo copiar una clave pública a su servidor