53 votes

Erreur SSL - Impossible de lire le certificat du serveur à partir du fichier

J'ai configuré le SSL pour mon domaine aujourd'hui, et j'ai rencontré un autre problème - j'espérais que quelqu'un pourrait m'éclairer sur

Je reçois constamment les messages d'erreur suivants :

\[error\] Init: Unable to read server certificate from file /etc/apache2/domain.com.ssl/domain.com.crt/domain.com.crt
\[error\] SSL Library Error: 218529960 error:0D0680A8:asn1 encoding routines:ASN1\_CHECK\_TLEN:wrong tag
\[error\] SSL Library Error: 218595386 error:0D07803A:asn1 encoding routines:ASN1\_ITEM\_EX\_D2I:nested asn1 error

J'utilise Apache 2.2.16 et Ubuntu 10.10. Mon fichier .crt contient les balises Begin et End, et a été copié exactement à partir de l'email de confirmation que j'ai reçu, c'est très frustrant !

Santé !

Editer >> Lorsque j'essaie de vérifier le .crt, cela ne semble pas fonctionner :

\>> openssl x509 -noout -text -in domain.com.crt 
unable to load certificate
16851:error:0906D06C:PEM routines:PEM\_read\_bio:no start line:pem\_lib.c:650:Expecting: TRUSTED CERTIFICATE

Également >>

\>> openssl x509 -text -inform PEM -in domain.com.crt
unable to load certificate
21321:error:0906D06C:PEM routines:PEM\_read\_bio:no start line:pem\_lib.c:650:Expecting: TRUSTED CERTIFICATE
    \>> openssl x509 -text -inform DER -in domain.com.crt
unable to load certificate
21325:error:0D0680A8:asn1 encoding routines:ASN1\_CHECK\_TLEN:wrong tag:tasn\_dec.c:1316:
21325:error:0D07803A:asn1 encoding routines:ASN1\_ITEM\_EX\_D2I:nested asn1 error:tasn\_dec.c:380:Type=X509

Editer>> (Au passage, merci pour votre aide)

\>> grep '^-----' domain.com.crt
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----

Je viens d'envoyer un courriel à la société qui fournit le certificat, qui m'a répondu.

J'ai vérifié le fichier CSR que vous avez fourni et je peux vous assurer que qu'il a été correctement généré. L'erreur que vous rencontrez actuellement rencontrez est due au fait que vous utilisez une ligne de commande erronée pour l'installation du CSR. Vous devrez modifier ce domain.com.crt à partir de votre ligne de commande avec l'arobase. ligne de commande avec le nom de votre domaine.

  • actuellement le crt est configuré sur mysite.com.crt - j'ai utilisé domain.com.crt comme exemple

58voto

MadHatter Points 77602

Est-il possible que les lignes soient terminées par un ^M ? Il s'agit d'un problème potentiel lors du transfert de fichiers d'un système Windows vers un système UNIX. Une façon simple de vérifier est d'utiliser vi en mode "show me the binary", avec vi -b /etc/apache2/domain.ssl/domain.ssl.crt/domain.com.crt .

Si chaque ligne se termine par un contrôle-M, comme ceci

-----BEGIN CERTIFICATE-----^M
MIIDITCCAoqgAwIBAgIQL9+89q6RUm0PmqPfQDQ+mjANBgkqhkiG9w0BAQUFADBM^M
MQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhhd3RlIENvbnN1bHRpbmcgKFB0eSkg^M
THRkLjEWMBQGA1UEAxMNVGhhd3RlIFNHQyBDQTAeFw0wOTEyMTgwMDAwMDBaFw0x^M

vous avez un fichier au format Windows à terminaison de ligne, et Apache n'aime pas ça.

Vous avez la possibilité de déplacer à nouveau le fichier, de prendre plus de précautions ou d'utiliser la fonction dos2unix pour les supprimer ; vous pouvez également les supprimer à l'intérieur de vi, si vous êtes prudent.


Editer : merci à @dave_thompson_085, qui signale que cette réponse ne s'applique plus en 2019. C'est-à-dire qu'Apache/OpenSSL sont désormais tolérants vis-à-vis des lignes terminées par ^M, et qu'elles ne posent donc pas de problèmes. Cela dit, d'autres erreurs de formatage, dont plusieurs exemples différents apparaissent dans les commentaires, peuvent encore causer des problèmes ; vérifiez attentivement ces erreurs si le certificat a été déplacé d'un système à l'autre.

29voto

Pour tous ceux qui arrivent sur cette page avec une erreur similaire lorsqu'ils essaient de lire une demande de signature de certificat (CSR) (notez que l'OP lit un certificat) : assurez-vous d'utiliser la bonne commande OpenSSL. x509 pour les certificats et req est destiné aux RSC :

openssl req -in server.csr -text -noout

vs

openssl x509 -in server.crt -text -noout

26voto

quanta Points 49664
>> openssl x509 -noout -text -in domain.com.crt 
unable to load certificate
16851:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:650:Expecting: TRUSTED CERTIFICATE

Je pense que vous avez un problème avec le format du certificat.

Exécutez les deux commandes suivantes et donnez-nous le résultat :

openssl x509 -text -inform DER -in domain.com.crt 
openssl x509 -text -inform PEM -in domain.com.crt

20voto

babttz Points 103

J'ai tourné en rond à ce sujet et il s'est avéré que j'avais inversé les certificats - par exemple

SSLCertificateFile    /etc/apache2/ssl/server.key
SSLCertificateKeyFile /etc/apache2/ssl/server.crt

au lieu de :

SSLCertificateFile    /etc/apache2/ssl/server.crt
SSLCertificateKeyFile /etc/apache2/ssl/server.key

Quelque chose à vérifier si vous obtenez cette erreur.

12voto

Scott Davey Points 211

Dans mon cas, j'ai constaté que mon certificat comportait des caractères "-" différents. Il doit s'agir d'un problème de copier/coller de l'administrateur qui a placé le certificat sur le serveur, l'éditeur de texte ayant remplacé -- par un caractère unicode spécial en cours de route.

Cela a pris des heures à diagnostiquer, et à la fin j'ai juste deviné, et j'ai édité le cert dans vi et supprimé les caractères "-" existants, et je les ai retapés.

J'espère que cela aidera quelqu'un.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X