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?
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.
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.
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-----
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"
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.