Sobald OpenCA installiert und das CA-Zertifikat ausgestellt ist, wird beim Klicken auf die Seriennummer des CA-Zertifikats der folgende Fehler ausgegeben.
Error Code: 6295020 [initServer:314] Cannot load certificate 404576247583593287078701 from the database.
Trotz aktivierter Debug-Option konnte ich keine relevanten Fehlermeldungen in stderror.log finden .
- Die Schnittstelle listet das CA-Zertifikat auf, zeigt die Zertifikatsinformationen jedoch nicht an, während
viewCert or viewCertFullausgeführt wird cmd-Operationen. - Ich habe das in der PostgreSQL-Datenbank gespeicherte CA_Certificate überprüft und es scheint in Ordnung und GÜLTIG zu sein.
- Die Abfragezeichenfolge in URI scheint mit dem
dataTypein Ordnung zu sein richtig wie folgt erwähnt:
cmd=viewCert&dataType=VALID_CA_CERTIFICATE&key=4045762475835932870787014.
- Normalerweise die Befehle, die von
lib/cmdsausgeführt werden wird inetc/openca/access_control/*.xmlkonfiguriert Dateien und alles scheint richtig konfiguriert zu sein.
Warum tritt dieser Fehler auf? Glücklicherweise eine Lösung gefunden und hier ist sie.
So beheben Sie den Fehler – OpenCA-Fehler Zertifikat kann nicht aus der Datenbank geladen werden
- Die
listCertsDatei enthält die UnterroutinecmdListCertswas die$querynimmt und parst es. $dataTypeist eines der Dinge, die es extrahiert.@certsListwird von der Datenbankabfrage gefüllt, die zum Auflisten desCA_CERTIFICATEzu funktionieren scheint .$typewird durch$dataTypeausgefüllt aus dem Link analysiert, der das Skript aufruft. Dies sollte also als Abfrageargument"dataType"erscheinen im Link hinter derserialund durch Klicken auf diesen Link sollte es anviewCertgesendet werden . Dort wieder$dataTypewird von$querygeparst genauso wie es fürlistCertswar , aber irgendwie funktioniert das in meinem OpenCA-Setup nicht richtig.
Ich vermutete den Weg viewCert unterscheidet zwischen CERTIFICATE und
CA_CERTIFICATE und wie verschiedene Abfragen für gültige, abgelaufene,
suspendierte und widerrufene Zertifikate behandelt werden.
Hier ist also eine Modifikation des viewCert cmd in der Datei lib/openca/perl_modules/perl5/OpenCA/AC.pm
Navigieren Sie zur Unterroutine getOwner wo Sie Folgendes finden:
sub getOwner {
Suchen Sie die Zeile:# load the certificate
Ersetzen Sie die folgenden Zeilen
my @certs;
my $certype = "CERTIFICATE";
if( not (@certs = $self->{db}->searchItems (
KEY => $self->{acl}->{object},
DATATYPE => "CERTIFICATE"))) {
# if (length ($self->{acl}->{object}) < 60 ) { # @certs = $self->{db}->searchItems (KEY => $self->{acl}->{object}, DATATYPE => "CERTIFICATE");
#}
$certtype = "CA_CERTIFICATE";
@certs = $self->{db}->searchItems (
KEY => $self->{acl}->{object},
DATATYPE => "CERTIFICATE");
} Mit:
my @certs;
my $certtype = "CERTIFICATE";
if( $self->{db}->searchItems (
KEY => $self->{acl}->{object},
DATATYPE => "CERTIFICATE")) {
$certtype = "CA_CERTIFICATE";
@certs = $self->{db}->searchItems (
KEY => $self->{acl}->{object},
DATATYPE => "CERTIFICATE");
} else {
$certtype = "CA_CERTIFICATE";
@certs = $self->{db}->searchItems (
KEY => $self->{acl}->{object},
DATATYPE => "CA_CERTIFICATE");
}
Das Problem war mit der Zeile: if( not (@certs = $self->{db}->searchItems (.
Das ist es! Hoffe, es hilft jemandem da draußen.