GNU/Linux >> Linux Esercitazione >  >> Linux

Verifica della firma non riuscita sulla chiave pubblica SPKAC – Correzione dell'errore OpenCA

Dopo aver installato OpenCA e aver impostato l'Autorità di certificazione (CA), ho riscontrato un errore:"Verifica della firma non riuscita sulla chiave pubblica SPKAC " durante la firma della richiesta di certificato dell'entità finale sul computer della 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
).

Sto usando openca-base-1.5.0 e openca-tools-1.3.0

Debug:

  • Ho abilitato l'opzione di debug in OpenCA e ho trovato il comando OpenSSL che firma il certificato utente. Di seguito è riportato lo snapshot del debug.
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

Altro dal debug...

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

L'errore "verifica della firma non riuscita sulla chiave pubblica SPKAC " dice chiaramente che il problema è durante la firma della chiave pubblica SPKAC – La richiesta è stata generata nella finestra del browser degli utenti come mostrato di seguito:

La richiesta generata dal browser è costituita dalla chiave pubblica SPKAC e dalla firma. L'SPKAC probabilmente usa MD5 nella sua firma. Non è sicuro e OpenSSL non verifica le firme che utilizzano MD5 per impostazione predefinita.

Quindi, come diciamo a OpenSSL di accettare richieste che utilizzano MD5? Ecco com'è.

Come correggere la verifica della firma non riuscita sulla chiave pubblica SPKAC

Imposta la variabile d'ambiente OPENSSL_ENABLE_MD5_VERIFY come soluzione alternativa per consentire a OpenSSL di firmare richieste che utilizzano MD5. Poiché OpenCA utilizza le sessioni, non puoi semplicemente impostare la variabile di ambiente sulla riga di comando. Devi impostarlo in modo programmatico, in modo che ogni volta che OpenCA utilizza il comando OpenSSL per firmare, dovrebbe essere impostato.

Quindi, imposta la variabile d'ambiente OPENSSL_ENABLE_MD5_VERIFY in /home/openca/lib/openca/perl_modules/perl5/x86_64-linux-thread-multi/OpenCA/OpenSSL.pm file:

Cerca la riga:# eseguendo il comando OpenSSL

Di seguito è riportato il codice, dove avviene la firma del certificato.

$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;
 }

Prima di eseguire il codice precedente, è necessario impostare la variabile di ambiente come mostrato di seguito:

$ENV{OPENSSL_ENABLE_MD5_VERIFY} = 0;

Ora riavvia il demone OpenCA e firma il tuo certificato utente. Dovrebbe funzionare.

Via Bugzilla


Linux
  1. Come risolvere l'errore GPG Nessuna chiave pubblica NO_PUBKEY durante l'aggiornamento apt-get

  2. Come correggere l'errore "verifica della chiave host non riuscita"

  3. Installazione di R dal repository Ubuntu CRAN:nessun errore di chiave pubblica

  4. Il clone di Git non riesce:la verifica del certificato del server non è riuscita

  5. Perché l'aggiunta di IP locale e nome utente in scp restituisce un errore di chiave pubblica?

Correzione dell'errore "Impossibile inizializzare Vagrant in una fase molto precoce".

Come risolvere l'errore di caricamento dei provider di KDE Discover non riuscito

Correzione dell'errore di download dei file di pacchetto non riuscito in Ubuntu

Correzione dell'errore:controllo libpci non riuscito. Disabilita la capacità di assegnazione del dispositivo KVM [Risolto]

Correzione – Errore:impossibile scaricare i metadati per il flusso di app del repository – CentOS 8

kvm:verifica del modulo non riuscita:firma e/o chiave richiesta mancanti - kernel contaminato