GNU/Linux >> Tutoriales Linux >  >> Linux

Error de OpenCA No se puede cargar el certificado desde la base de datos

Una vez que se instala OpenCA y se emite el certificado de CA, al hacer clic en el número de serie del certificado de CA se muestra el siguiente error.

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

A pesar de habilitar la opción de depuración, no pude encontrar ningún mensaje de error relevante en stderror.log .

  • La interfaz enumera el certificado de CA, pero no muestra la información del certificado al ejecutar viewCert or viewCertFull operaciones cmd.
  • Verifiqué el CA_Certificate almacenado en la base de datos de PostgreSQL y parece estar bien y VÁLIDO.
  • La cadena de consulta en URI parece estar bien con el dataType correctamente mencionado a continuación:
cmd=viewCert&dataType=VALID_CA_CERTIFICATE&key=4045762475835932870787014.
  • Por lo general, los comandos se ejecutan desde lib/cmds está configurado en etc/openca/access_control/*.xml archivos y todo parece estar configurado correctamente.

Entonces, ¿por qué ocurre este error? Afortunadamente encontré una solución y aquí está.

Cómo solucionar el error:error de OpenCA No se puede cargar el certificado de la base de datos

  • La listCerts El archivo contiene la subrutina cmdListCerts que toma la $query y lo analiza.
  • $dataType es una de las cosas que extrae.
  • @certsList se completa con la consulta de la base de datos, que parece funcionar para enumerar el CA_CERTIFICATE .
  • $type se completa con $dataType analizado desde el enlace que llama al script. Entonces, esto debería aparecer como argumento de consulta "dataType" en el enlace detrás del serial y al hacer clic en ese enlace, debe enviarse a viewCert . Allí nuevamente, $dataType se analiza desde $query tal como lo fue para listCerts , pero de alguna manera esto no funciona correctamente en mi configuración de OpenCA.

Sospeché la forma viewCert distingue entre CERTIFICATE y
CA_CERTIFICATE y la forma en que se manejan varias consultas de certificados válidos, caducados,
suspendidos y revocados.

Así que aquí hay una modificación al viewCert cmd en el archivo lib/openca/perl_modules/perl5/OpenCA/AC.pm

Navegue a la subrutina getOwner donde encontrará lo siguiente:

sub getOwner {

Busque la línea:# load the certificate

Reemplace las siguientes líneas

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

Con:

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

El problema estaba en la línea: if( not (@certs = $self->{db}->searchItems (.)

¡Eso es todo! Espero que ayude a alguien por ahí.


Linux
  1. Examen de archivos Berkeley DB desde la CLI

  2. cómo iniciar sesión en mysql y consultar la base de datos desde la terminal de Linux

  3. Los binarios de linux-x64 no se pueden usar en el error de la plataforma linuxmusl-x64

  4. Base de datos MySql desde una memoria USB

  5. ¿Cómo puedo resolver el error no se puede ejecutar el archivo binario?

Cómo iniciar sesión en una base de datos Postgresql desde la línea de comandos

Solución de problemas del error "Certificado TLS inaceptable" en Linux

Error de OpenCA No se puede cargar el certificado desde la base de datos

¿No se puede encontrar -lm?

¿Cómo solucionar el error:Cpanel::Excepción::Base de datos::Error/(XID 9a8sak)?

Borrar los comentarios de WordPress no aprobados de la base de datos