GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Signaturüberprüfung beim öffentlichen SPKAC-Schlüssel fehlgeschlagen – OpenCA-Fehler behoben

Nach der Installation von OpenCA und der Einrichtung der Zertifizierungsstelle (CA) ist ein Fehler aufgetreten – „Signaturüberprüfung beim öffentlichen SPKAC-Schlüssel fehlgeschlagen ” beim Signieren der Zertifikatsanforderung der Endeinheit auf dem CA-Rechner.

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
).

Ich verwende openca-base-1.5.0 und openca-tools-1.3.0

Fehlerbehebung:

  • Ich habe die Debug-Option in OpenCA aktiviert und den OpenSSL-Befehl gefunden, der das Benutzerzertifikat signiert. Unten ist der Schnappschuss vom 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

Mehr vom 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

Der Fehler "Signaturüberprüfung beim öffentlichen SPKAC-Schlüssel fehlgeschlagen “ sagt eindeutig, dass das Problem beim Signieren des öffentlichen SPKAC-Schlüssels auftritt – Die Anfrage wurde im Browserfenster des Benutzers generiert, wie unten gezeigt:

Die vom Browser generierte Anforderung besteht aus dem öffentlichen SPKAC-Schlüssel und der Signatur. Der SPKAC verwendet wahrscheinlich MD5 in seiner Signatur. Das ist unsicher und OpenSSL überprüft keine Signaturen, die MD5 verwenden standardmäßig.

Wie weisen wir also OpenSSL an, Anfragen zu akzeptieren, die MD5 verwenden? So geht's.

So beheben Sie, dass die Signaturüberprüfung beim öffentlichen SPKAC-Schlüssel fehlgeschlagen ist

Legen Sie die Umgebungsvariable OPENSSL_ENABLE_MD5_VERIFY fest als Problemumgehung, damit OpenSSL Anforderungen signieren kann, die MD5 verwenden. Da OpenCA Sitzungen verwendet, können Sie die Umgebungsvariable nicht einfach in der Befehlszeile festlegen. Sie müssen es programmgesteuert festlegen, sodass es immer dann festgelegt werden sollte, wenn OpenCA den OpenSSL-Befehl zum Signieren verwendet.

Legen Sie also die Umgebungsvariable OPENSSL_ENABLE_MD5_VERIFY fest in /home/openca/lib/openca/perl_modules/perl5/x86_64-linux-thread-multi/OpenCA/OpenSSL.pm Datei:

Suchen Sie nach der Zeile:# Running the OpenSSL command

Unten ist der Code, wo die Zertifikatsignierung stattfindet.

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

Bevor Sie den obigen Code ausführen, müssen Sie die Umgebungsvariable wie unten gezeigt festlegen:

$ENV{OPENSSL_ENABLE_MD5_VERIFY} = 0;

Starten Sie nun den OpenCA-Daemon neu und signieren Sie Ihr Benutzerzertifikat. Es sollte funktionieren.

Über Bugzilla


Linux
  1. Wie behebt man den OpenStack-Fehler – Netzwerk konnte nicht gelöscht werden? [Gelöst]

  2. OpenCA-Fehler addMessage für Log-Slot-XML fehlgeschlagen. Verzeichnis kann nicht erstellt werden [Gelöst]

  3. Behebung des OpenCA-Startfehlers Version.pm kann nicht gefunden werden

  4. Der Abruf öffentlicher Schlüssel ist nicht zulässig – WSO2-MySQL-Fehler

  5. So beheben Sie den Fehler „Verifizierung des Hostschlüssels fehlgeschlagen“

Behebung des Fehlers „Vagrant konnte nicht in einem sehr frühen Stadium initialisiert werden“.

So beheben Sie den Fehler beim Laden von Anbietern durch KDE Discover

Fehler beim Herunterladen von Paketdateien in Ubuntu behoben

Fix – Fehler:Fehler beim Herunterladen von Metadaten für Repo-Appstream – CentOS 8

Git Clone schlägt fehl:Überprüfung des Serverzertifikats fehlgeschlagen

Warum gibt das Hinzufügen einer lokalen IP und eines Benutzernamens in scp einen Public-Key-Fehler zurück?