GNU/Linux >> Znalost Linux >  >> Linux

Chyba OpenCA Nelze načíst certifikát z databáze

Jakmile je OpenCA nainstalována a certifikát CA je vydán, kliknutím na sériové číslo certifikátu CA vyvoláte níže uvedenou chybu.

Error Code: 6295020 [initServer:314] Cannot load certificate 404576247583593287078701 from the database.

Navzdory povolení možnosti ladění jsem v stderror.log nenašel žádné relevantní chybové zprávy .

  • Rozhraní uvádí certifikát CA, ale nezobrazuje informace o certifikátu při provádění viewCert or viewCertFull operace cmd.
  • Ověřil jsem CA_Certificate uložený v databázi PostgreSQL a zdá se, že je v pořádku a PLATNÝ.
  • Řetězec dotazu v URI se zdá být v pořádku s dataType správně uvedeno níže:
cmd=viewCert&dataType=VALID_CA_CERTIFICATE&key=4045762475835932870787014.
  • Obvykle příkazy spouštěné z lib/cmds je nakonfigurován v etc/openca/access_control/*.xml soubory a vše se zdá být správně nakonfigurováno.

Proč tedy k této chybě dochází? Naštěstí jsme našli řešení a tady je.

Jak opravit chybu – chyba OpenCA Nelze načíst certifikát z databáze

  • listCerts soubor obsahuje podprogram cmdListCerts který přebírá $query a analyzuje to.
  • $dataType je jednou z věcí, které extrahuje.
  • @certsList je vyplněno databázovým dotazem, který zřejmě funguje pro výpis CA_CERTIFICATE .
  • $type je vyplněno $dataType analyzován z odkazu volajícího skript. Toto by se tedy mělo objevit jako argument dotazu "dataType" v odkazu za serial a kliknutím na tento odkaz by měl být odeslán do viewCert . Zde je opět $dataType je analyzován z $query stejně jako u listCerts , ale nějak to nefunguje správně v mém nastavení OpenCA.

Měl jsem podezření na způsob viewCert rozlišuje mezi CERTIFICATE a
CA_CERTIFICATE a způsobem, jakým jsou zpracovávány různé dotazy na platné, expirované,
pozastavené a zrušené certifikáty.

Zde je tedy úprava viewCert cmd v souboru lib/openca/perl_modules/perl5/OpenCA/AC.pm

Přejděte do podprogramu getOwner kde najdete následující:

sub getOwner {

Najděte řádek:# load the certificate

Nahraďte níže uvedené řádky

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");
}

S:

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");
}

Problém byl s řádkem: if( not (@certs = $self->{db}->searchItems (.)

A je to! Doufám, že to někomu pomůže.


Linux
  1. Chyba prohlížeče certifikátu SSL

  2. Zkoumání souborů Berkeley DB z CLI

  3. jak se přihlásit do mysql a dotazovat se na databázi z linuxového terminálu

  1. Nelze najít chybu pkg-config

  2. CHYBA:ld.so:objekt 'libgtk3-nocsd.so.0' z LD_PRELOAD nelze předem načíst

  3. binární soubory linux-x64 nelze použít na chybě platformy linuxmusl-x64

  1. Jak se přihlásit do databáze Postgresql z příkazového řádku

  2. Jak mohu vyřešit chybu nelze spustit binární soubor?

  3. kde se nachází databáze updatedb?