Setelah OpenCA diinstal dan Sertifikat CA diterbitkan, mengklik nomor seri Sertifikat CA akan menampilkan kesalahan di bawah ini.
Error Code: 6295020 [initServer:314] Cannot load certificate 404576247583593287078701 from the database.
Meskipun mengaktifkan opsi debug, saya tidak dapat menemukan pesan kesalahan yang relevan di stderror.log .
- Antarmuka mencantumkan sertifikat CA, tetapi gagal menampilkan informasi sertifikat saat menjalankan
viewCert or viewCertFulloperasi cmd. - Saya memverifikasi CA_Certificate yang disimpan di database PostgreSQL dan tampaknya baik-baik saja dan VALID.
- String kueri dalam URI tampaknya baik-baik saja dengan
dataTypedisebutkan dengan benar seperti di bawah ini:
cmd=viewCert&dataType=VALID_CA_CERTIFICATE&key=4045762475835932870787014.
- Biasanya perintah dijalankan dari
lib/cmdsdikonfigurasi dietc/openca/access_control/*.xmlfile dan semuanya tampaknya telah dikonfigurasi dengan benar.
Jadi mengapa kesalahan ini terjadi? Untungnya menemukan solusi dan ini dia.
Cara memperbaiki kesalahan – Kesalahan OpenCA Tidak dapat memuat sertifikat dari database
listCertsfile berisi sub-rutincmdListCertsyang mengambil$querydan menguraikannya.$dataTypeadalah salah satu hal yang diekstraksi.@certsListdiisi oleh kueri basis data, yang tampaknya berfungsi untuk mendaftarCA_CERTIFICATE.$typediisi oleh$dataTypediuraikan dari tautan yang memanggil skrip. Jadi, ini akan muncul sebagai argumen kueri"dataType"di tautan di belakangserialdan dengan mengeklik tautan itu, tautan itu akan dikirim keviewCert. Sekali lagi,$dataTypediurai dari$queryseperti halnya untuklistCerts, tetapi entah bagaimana ini tidak berfungsi dengan benar di penyiapan OpenCA saya.
Saya menduga cara viewCert membedakan antara CERTIFICATE dan
CA_CERTIFICATE serta cara menangani berbagai kueri untuk sertifikat yang valid, kedaluwarsa,
ditangguhkan, dan dicabut.
Jadi di sini adalah modifikasi pada viewCert cmd dalam file lib/openca/perl_modules/perl5/OpenCA/AC.pm
Navigasikan ke sub-rutin getOwner di mana Anda akan menemukan yang berikut:
sub getOwner {
Cari baris:# load the certificate
Ganti baris di bawah ini
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");
} Dengan:
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");
}
Masalahnya ada pada baris: if( not (@certs = $self->{db}->searchItems (.
Itu dia! Semoga ini bisa membantu seseorang di luar sana.