Mensaje de error
unable to load certificate
Texto de OpenSSL 1.1.x. OpenSSL 3.0 imprime «Could not read certificate from cert.pem» seguido de «Unable to load certificate» con U mayúscula; OpenSSL 3.5 y posteriores imprimen «Could not find certificate from cert.pem» más una línea de la pila de errores de STORE routines (reproducido con 3.0.2 y 3.6.4). El texto varía según la versión; el fallo es idéntico.
Qué significa
openssl x509 (u otro comando que lee certificados) no pudo extraer un certificado del archivo. La entrada es otro objeto PEM (una clave, una CSR), está en una codificación binaria incorrecta o es un texto que ni siquiera es una estructura X.509: el comando no llegó a leer ningún campo. Como los archivos de certificado se llaman .crt o .cer sea cual sea su codificación, el nombre del archivo no dice nada aquí; solo los bytes lo hacen.
Por qué ocurre
El archivo contiene una clave o una CSR, no un certificado
frecuenteLos bloques BEGIN PRIVATE KEY, BEGIN PUBLIC KEY o BEGIN CERTIFICATE REQUEST no son certificados. Las CSR, en particular, se confunden constantemente con certificados: una CSR es lo que envías a una CA; el certificado es lo que recibes de vuelta.
Certificado DER sin -inform der
frecuenteLos archivos .cer/.crt del ecosistema Windows suelen estar en DER binario. openssl x509 en OpenSSL 1.1 espera PEM por defecto y no encuentra la armadura; OpenSSL 3 detecta DER por sí solo.
Paquete PKCS#7 / PKCS#12
ocasionalLos archivos .p7b y .pfx/.p12 son contenedores que guardan certificados, no certificados sueltos. Necesitan sus propios comandos para desempaquetarlos antes de que x509 pueda leer su contenido.
Cómo solucionarlo
- 1.
Identificar y después convertir
Comprueba la etiqueta o los primeros bytes; convierte DER a PEM si hace falta.
bash head -1 cert.file # BEGIN what? openssl x509 -inform der -in cert.der -out cert.pem # DER → PEM - 2.
Desempaquetar los formatos contenedor
Extrae los certificados de los paquetes PKCS#7 y PKCS#12 a PEM simple.
bash openssl pkcs7 -print_certs -in bundle.p7b -out certs.pem openssl pkcs12 -in bundle.pfx -clcerts -nokeys -out cert.pem - 3.
Para una CSR, usar el comando req
Si el archivo es una solicitud, inspecciónala con req, y recuerda que todavía tiene que firmarla una CA para convertirse en un certificado.
bash openssl req -in request.csr -noout -text