Message d’erreur
unable to load certificate
Formulation d’OpenSSL 1.1.x. OpenSSL 3.0 affiche « Could not read certificate from cert.pem » suivi de « Unable to load certificate » avec un U majuscule ; OpenSSL 3.5 et les versions ultérieures affichent « Could not find certificate from cert.pem » ainsi qu’une ligne de pile STORE-routines (reproduit sur 3.0.2 et 3.6.4). La formulation varie selon la version ; l’échec est identique.
Ce que cela signifie
openssl x509 (ou une autre commande qui lit des certificats) n’a pas pu extraire de certificat du fichier. L’entrée est un autre objet PEM (clé, CSR), un mauvais encodage binaire, ou un texte qui n’est pas du tout une structure X.509 : la commande n’est même pas arrivée à la lecture des champs. Comme les fichiers de certificats portent l’extension .crt ou .cer quel que soit leur encodage, le nom du fichier ne vous apprend rien ici ; seuls les octets vous renseignent.
Pourquoi cela se produit
Le fichier contient une clé ou une CSR, pas un certificat
fréquenteLes blocs BEGIN PRIVATE KEY, BEGIN PUBLIC KEY ou BEGIN CERTIFICATE REQUEST ne sont pas des certificats. Les CSR, en particulier, sont constamment prises pour des certificats : une CSR est ce que vous envoyez à une AC ; le certificat est ce qui vous revient.
Certificat DER sans -inform der
fréquenteLes fichiers .cer/.crt de l’écosystème Windows sont souvent en DER binaire. Dans OpenSSL 1.1, openssl x509 attend du PEM par défaut et ne trouve pas l’encadrement PEM ; OpenSSL 3 détecte le DER de lui-même.
Bundle PKCS#7 / PKCS#12
occasionnelleLes fichiers .p7b et .pfx/.p12 sont des conteneurs de certificats, pas des certificats seuls. Il faut en extraire le contenu avec les commandes dédiées avant que x509 puisse le lire.
Comment corriger l’erreur
- 1.
Identifier, puis convertir
Vérifiez le libellé ou les premiers octets ; convertissez le DER en PEM si nécessaire.
bash head -1 cert.file # BEGIN what? openssl x509 -inform der -in cert.der -out cert.pem # DER → PEM - 2.
Extraire le contenu des formats conteneurs
Extrayez les certificats des bundles PKCS#7 et PKCS#12 en PEM simple.
bash openssl pkcs7 -print_certs -in bundle.p7b -out certs.pem openssl pkcs12 -in bundle.pfx -clcerts -nokeys -out cert.pem - 3.
Pour une CSR, utiliser la commande req
Si le fichier est une demande, examinez-le avec req, et n’oubliez pas qu’elle doit encore être signée par une AC pour devenir un certificat.
bash openssl req -in request.csr -noout -text