GNU/Linux >> Tutoriels Linux >  >> Linux

La vérification de la signature a échoué sur la clé publique SPKAC - Correction de l'erreur OpenCA

Après avoir installé OpenCA et configuré l'autorité de certification (CA), j'ai rencontré une erreur - "La vérification de la signature a échoué sur la clé publique SPKAC " lors de la signature de la demande de certificat d'entité finale sur la machine CA.

Erreur lors de l'émission du certificat à David (nom de fichier :/home/openca/var/openca/tmp/4229D72DA1BA34B416B9.req).OpenCA::OpenSSL renvoie le code d'erreur 7731075 (OpenCA::OpenSSL->issueCert :OpenSSL échoue (7777067). Utilisation de la configuration de /home/openca/etc/openca/openssl/openssl/User.confVérifiez que la requête SPKAC correspond à la signatureLa vérification de la signature a échoué sur la clé publique SPKAC140250398984096 :erreur :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).

J'utilise openca-base-1.5.0 et openca-tools-1.3.0

Débogage :

  • J'ai activé l'option de débogage dans OpenCA et j'ai trouvé la commande OpenSSL qui signe le certificat utilisateur. Vous trouverez ci-dessous l'instantané du débogage.
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

En savoir plus sur le débogage…

OpenCA::OpenSSL->setError :errno :7731075OpenCA::OpenSSL->setError :errval :OpenCA::OpenSSL->issueCert :OpenSSL échoue (7777067). Utilisation de la configuration de /home/openca/etc/openca/openssl/openssl/User.confVérifiez que la requête SPKAC correspond à la signaturela vérification de la signature a échoué sur la clé publique SPKAC140030475425696 :erreur :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

L'erreur "la vérification de la signature a échoué sur la clé publique SPKAC " indique clairement que le problème est lors de la signature de la clé publique SPKAC - La demande a été générée sur la fenêtre du navigateur de l'utilisateur comme indiqué ci-dessous :

La requête générée par le navigateur se compose de la clé publique et de la signature SPKAC. Le SPKAC utilise probablement MD5 dans sa signature. Ce n'est pas sécurisé et OpenSSL ne vérifie pas les signatures qui utilisent MD5 par défaut.

Alors, comment dire à OpenSSL d'accepter les requêtes qui utilisent MD5 ? Voici comment c'est.

Comment réparer l'échec de la vérification de signature sur la clé publique SPKAC

Définissez la variable d'environnement OPENSSL_ENABLE_MD5_VERIFY comme solution de contournement pour permettre à OpenSSL de signer des requêtes utilisant MD5. Comme OpenCA utilise des sessions, vous ne pouvez pas simplement définir la variable d'environnement sur la ligne de commande. Vous devez le définir par programme, de sorte que chaque fois qu'OpenCA utilise la commande OpenSSL pour signer, il doit être défini.

Donc, définissez la variable d'environnement OPENSSL_ENABLE_MD5_VERIFY dans /home/openca/lib/openca/perl_modules/perl5/x86_64-linux-thread-multi/OpenCA/OpenSSL.pm fichier :

Recherchez la ligne :# exécution de la commande OpenSSL

Ci-dessous se trouve le code, où la signature du certificat se produit.

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

Avant d'exécuter le code ci-dessus, vous devez définir la variable d'environnement comme indiqué ci-dessous :

$ENV{OPENSSL_ENABLE_MD5_VERIFY} =0 ;

Redémarrez maintenant le démon OpenCA et signez votre certificat utilisateur. Cela devrait fonctionner.

Via Bugzilla


Linux
  1. OpenCA Error addMessage a échoué pour l'emplacement de journal XML. Impossible de créer le répertoire [Résolu]

  2. Correction de l'erreur de démarrage OpenCA Impossible de localiser version.pm

  3. Installation de R à partir du référentiel CRAN Ubuntu :aucune erreur de clé publique

  4. kvm :échec de la vérification du module :signature et/ou clé requise manquantes - noyau entaché

  5. Échec du clonage Git :échec de la vérification du certificat du serveur

Correction de l'erreur "Vagrant n'a pas réussi à s'initialiser à un stade très précoce"

Comment réparer l'erreur d'échec du chargement de KDE Discover des fournisseurs

Le correctif n'a pas pu télécharger l'erreur de fichiers de package dans Ubuntu

Correctif - Erreur :Échec du téléchargement des métadonnées pour le flux d'applications du référentiel - CentOS 8

Comment réparer l'erreur GPG No Public Key NO_PUBKEY lors de la mise à jour apt-get

Comment corriger l'erreur "échec de la vérification de la clé de l'hôte"