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 viewCertFull
operasi 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
dataType
disebutkan dengan benar seperti di bawah ini:
cmd=viewCert&dataType=VALID_CA_CERTIFICATE&key=4045762475835932870787014.
- Biasanya perintah dijalankan dari
lib/cmds
dikonfigurasi dietc/openca/access_control/*.xml
file 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
listCerts
file berisi sub-rutincmdListCerts
yang mengambil$query
dan menguraikannya.$dataType
adalah salah satu hal yang diekstraksi.@certsList
diisi oleh kueri basis data, yang tampaknya berfungsi untuk mendaftarCA_CERTIFICATE
.$type
diisi oleh$dataType
diuraikan dari tautan yang memanggil skrip. Jadi, ini akan muncul sebagai argumen kueri"dataType"
di tautan di belakangserial
dan dengan mengeklik tautan itu, tautan itu akan dikirim keviewCert
. Sekali lagi,$dataType
diurai dari$query
seperti 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.