web-dev-qa-db-fra.com

nginx ne parvient pas à charger le certificat SSL

Je dois ajouter SSL (https) pour un site Web, on m'a donné un fichier SSL.CSR et un fichier SSL.KEY. Je les ai 'dos2unix' (car ils ont suivi ^ M) et je les ai copiés sur le serveur (CSR -> mywebsite.crt, KEY -> mywebsite.key). J'ai apporté la modification suivante à nginx.conf:

@@ -60,8 +60,13 @@
        }

     server {
-       listen       80;
+       listen       443;
         server_name  ...;
+       ssl                 on;
+       ssl_certificate     mywebsite.crt;
+       ssl_certificate_key mywebsite.key;
+       ssl_session_cache   shared:SSL:10m;
+       ssl_session_timeout 10m;
        # Set the max size for file uploads to 500Mb

        client_max_body_size 500M;

Une erreur se produit lorsque je redémarre nginx:

nginx: [emerg] PEM_read_bio_X509_AUX("/etc/nginx/mywebsite.crt") failed (SSL: error:0906D06C:PEM routines:PEM_read_bio:no start line:Expecting: TRUSTED CERTIFICATE)

Je suppose que c'est parce que la première ligne du fichier mywebsite.crt contient 'REQUEST'. Je supprime donc 'REQUEST' de la première et de la dernière ligne, puis je relance nginx à nouveau et je frappe une autre erreur:

nginx: [emerg] PEM_read_bio_X509_AUX("/etc/nginx/mywebsite.crt") failed (SSL: error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag error:0D06C03A:asn1 encoding routines:ASN1_D2I_EX_PRIMITIVE:nested asn1 error error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 error:Field=algorithm, Type=X509_ALGOR error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 error:Field=signature, Type=X509_CINF error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 error:Field=cert_info, Type=X509 error:0906700D:PEM routines:PEM_ASN1_read_bio:ASN1 lib)

Une idée?

25
user21916

Vous ne devriez jamais partager votre clé privée. Vous devez considérer que la clé que vous avez publiée ici est compromise et générer une nouvelle clé et une demande de signature.

Vous avez une demande de certificat et non un certificat signé. Vous fournissez la demande ('CSR') à la personne qui signe. Ils utilisent cette demande pour créer un certificat signé ('CRT') qu'ils mettent ensuite à votre disposition. La clé n'est jamais divulguée à personne.

26
Mark Sturgill

Pour votre information, vous pouvez valider les touches en appelant simplement:

openssl x509 -noout -text -in your.crt
openssl rsa -noout -text -in your.key

Dans mon cas, cette erreur s’est avérée plutôt subtile: le bloc BEGIN a commencé avec 4 tirets et non 5 . ---- vs -----. Malheureusement, les messages d'erreur de l'outil de validation ne sont pas très spécifiques.

14
Joseph Lust

Je suis tombé sur ce problème en recherchant SSL en ligne: erreur: 0906D06C: routines PEM: PEM_read_bio: aucune ligne de départ: attente: CERTIFICAT DE CONFIANCE
J'ai eu cette erreur après avoir exécuté:

    nginx -t

Le problème que j'avais était que cert.pem et cert.key manquait

    -----BEGIN CERTIFICATE-----
    -----END CERTIFICATE-----
11
Christie

J'ai mal configuré les certificats dans le fichier gitlab.rb . Une simple erreur a été longue à réaliser.

nginx['ssl_certificate'] = "/etc/gitlab/ssl/self-ssl.crt"
nginx['ssl_certificate'] = "/etc/gitlab/ssl/self-ssl.key"

Au lieu de


nginx['ssl_certificate'] = "/etc/gitlab/ssl/self-ssl.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/self-ssl.key"
2
Ershad Ahmad

Les étapes de sur le site NGINX pour combiner votre certificat public avec un certificat intermédiaire utilisent cat pour combiner les deux fichiers. Mais si votre fichier de certificat public ne se termine pas par une nouvelle ligne, la ligne -----BEGIN CERTIFICATE----- du certificat intermédiaire sera ajoutée à la fin de la ligne -----END CERTIFICATE----- du certificat public, ce qui aboutira à un fichier de certificat chaîné non valide. La séparation manuelle de ces deux lignes peut corriger le problème.

0
MikeOnline