Je ne parviens pas à configurer SSL. J'ai cherché sur Google et j'ai trouvé quelques solutions mais aucune d'entre elles n'a fonctionné pour moi. J'ai besoin d'aide s'il vous plait...
Voici l'erreur que je reçois lorsque je tente de redémarrer nginx:
root@s17925268:~# service nginx restart
Restarting nginx: nginx: [emerg] SSL_CTX_use_PrivateKey_file("/etc/nginx/conf.d/ssl/ssl.key") failed (SSL: error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch)
nginx: configuration file /etc/nginx/nginx.conf test failed
Mon certificat provient de StartSSL et est valable 1 an.
Voici ce que j'ai testé:
J'ai également vérifié le module et j'obtiens un module différent pour la clé et le certificat.
Merci de votre aide. :)
J'ai eu un hachage MD5 avec des résultats différents pour la clé et le certificat.
Cela dit tout. Vous avez un décalage entre votre clé et votre certificat.
Le module devrait correspondre. Assurez-vous d'avoir la bonne clé.
Une fois que vous avez établi qu’elles ne correspondent pas, vous avez toujours un problème: que faire? Souvent, le certificat peut simplement être assemblé de manière incorrecte. Quand une autorité de certification signe votre certificat, elle vous envoie un bloc qui ressemble à quelque chose comme:
-----BEGIN CERTIFICATE-----
MIIAA-and-a-buncha-nonsense-that-is-your-certificate
-and-a-buncha-nonsense-that-is-your-certificate-and-
a-buncha-nonsense-that-is-your-certificate-and-a-bun
cha-nonsense-that-is-your-certificate-and-a-buncha-n
onsense-that-is-your-certificate-AA+
-----END CERTIFICATE-----
ils vous enverront également un paquet (souvent deux certificats) qui représente leur autorité pour vous accorder un certificat. cela ressemblera à quelque chose comme
-----BEGIN CERTIFICATE-----
MIICC-this-is-the-certificate-that-signed-your-request
-this-is-the-certificate-that-signed-your-request-this
-is-the-certificate-that-signed-your-request-this-is-t
he-certificate-that-signed-your-request-this-is-the-ce
rtificate-that-signed-your-request-A
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIICC-this-is-the-certificate-that-signed-for-that-one
-this-is-the-certificate-that-signed-for-that-one-this
-is-the-certificate-that-signed-for-that-one-this-is-t
he-certificate-that-signed-for-that-one-this-is-the-ce
rtificate-that-signed-for-that-one-this-is-the-certifi
cate-that-signed-for-that-one-AA
-----END CERTIFICATE-----
sauf que malheureusement, ils ne seront pas aussi clairement étiquetés.
une pratique courante consiste donc à regrouper tous ces éléments dans un seul fichier - votre certificat, puis les certificats de signature. Mais comme ils ne sont pas faciles à distinguer, il arrive parfois que quelqu'un les mette accidentellement dans l'ordre inverse - signant des certificats, puis le certificat final - sans s'en rendre compte. Dans ce cas, votre certificat ne correspondra pas à votre clé.
Vous pouvez tester pour voir ce que le cert pense représenter en lançant
openssl x509 -noout -text -in yourcert.cert
Près du haut, vous devriez voir "Subject:", puis des éléments qui ressemblent à vos données. Si au lieu de cela, cela ressemble à votre autorité de certification, votre lot est probablement dans le mauvais ordre; vous pouvez essayer de faire une sauvegarde, puis de déplacer le dernier certificat au début, en espérant qu'il s'agisse de celui qui est votre certificat.
Si cela ne fonctionne pas, il vous suffira peut-être de faire réémettre le certificat. Lorsque je fais une CSR, j'aime bien identifier le serveur auquel il est destiné (au lieu de ssl.key ou server.key) et en faire une copie avec la date dans le nom, comme par exemple mydomain.20150306.key, etc. il est peu probable que les paires de clés privées et publiques se mêlent à un autre ensemble.
Vérifiez un hachage MD5 de la clé publique pour vous assurer qu'il correspond à ce qui se trouve dans une clé privée
openssl x509 -noout -modulus -in certificate.crt | openssl md5
openssl rsa -noout -modulus -in privateKey.key | openssl md5
J'ai eu ce problème parce que j'ajoutais bundle et certificat dans le mauvais ordre, alors cela pourrait peut-être aider quelqu'un d'autre.
Avant (ce qui est faux):
cat ca_bundle.crt certificate.crt > bundle_chained.crt
Après (ce qui est juste)
cat certificate.crt ca_bundle.crt > bundle_chained.crt
Et n'oubliez pas de mettre à jour la conf appropriée (ssl_certificate doit maintenant pointer sur le crt chaîné) en tant que
server {
listen 443 ssl;
server_name www.example.com;
ssl_certificate bundle_chained.crt;
ssl_certificate_key www.example.com.key;
...
}
Depuis la page de manuel nginx :
Si le certificat de serveur et le bundle ont été concaténés dans le mauvais ordre, nginx ne pourra pas démarrer et affichera le message d'erreur suivant:
SSL_CTX_use_PrivateKey_file(" ... /www.example.com.key") failed
(SSL: error:0B080074:x509 certificate routines:
X509_check_private_key:key values mismatch)
Si cela se produit et que vous utilisez Let's Encrypt/certbot, il est fort probable que vous ayez utilisé chain.pem
au lieu de fullchain.pem
.
Cela devrait être quelque chose comme ça:
ssl_certificate /etc/certbot/live/example.com/fullchain.pem;
ssl_certificate_key /etc/certbot/live/example.com/privkey.pem;
J'ai eu le même problème et finalement résolu en modifiant l'ordre des blocs PEM dans le fichier de certificat.
Le bloc de certificats doit être placé au début du fichier, puis aux blocs intermédiaires, puis au bloc racine.
J'ai réalisé ce problème en comparant un fichier de certificat problématique avec un fichier de certificat de travail.
Mes 5 centimes sur la question:
J'ai eu le même problème. Après environ 1 heure de travail, j’ai constaté que j’avais mal collé le certificat.
Dans mon cas, je voulais changer le certificat SSL, parce que j’avais changé de serveur, j’ai donc dû créer un nouveau CSR avec cette commande:
$ openssl req -new -newkey rsa: 2048 -nodes -keyout mysite.key -out mysite.csr
J'ai envoyé le fichier mysite.csr au fournisseur de ssl de la société et après avoir reçu le certificat crt, puis j'ai redémarré nginx, et j'ai cette erreur.
(SSL: erreur: 0B080074: routines de certificat x509: X509_check_private_key: incompatibilité des valeurs de clé)
Après beaucoup de recherches, l'erreur était que le module du fichier clé n'était pas le même que celui du fichier crt
Donc, pour que cela fonctionne, j'ai créé un nouveau fichier csr mais j'ai changé le nom du fichier avec cette commande
$ openssl req -new -newkey rsa: 2048 -nodes -keyout mysite_new.key -out mysite_new.csr
Ensuite, j’ai reçu un nouveau fichier CRT du fournisseur de la société, redémarrez Nginx et cela a fonctionné.
Cela m'est arrivé lorsque j'ai combiné le bundle.crt et le principal cert. La raison en est que j'ai copié le principal certificat ci-dessous le bundle.crt. Il devrait être l'inverse
1/principal cert 2/bundle.crt
Dans mon cas, le problème était que je créais des inscriptions sans entrer aucune donnée dans l'interface CLI. Quand j'ai régénéré les certificats et saisi tous les champs: Ville, État, etc., tout est devenu bien.
Sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/nginx-selfsigned.key -out /etc/ssl/certs/nginx-selfsigned.crt
J'ai rencontré ce problème (deux fois) avec nginx et aucune des solutions présentées dans ce message n'explique le problème. Le blog ici, écrit par un gentilhomme nommé Marco, l’a cloué, et je le colle ici pour tous ceux qui se heurtent également à ce que je voyais. https://medium.com/@mrkdsgn/steps-to-install-a-go-daddy-ssl-certificate-on-nginx-on-ubuntu-14-04-ff942b9fd7ff
Dans mon cas, Go-Daddy était le CA et cela est spécifique à la façon dont ils délivrent le cert et les kits de cert intermédiaires.
Avec Nginx, si votre autorité de certification incluait un certificat intermédiaire, vous devez créer un fichier de certificat chaîné unique contenant votre certificat et les certificats intermédiaires de l’autorité de certification.
Vous pouvez utiliser cette commande pour créer un fichier combiné appelé example.com.chained.crt:
cat example.com.crt intermediate.crt > example.com.chained.crt
Pour Nginx;
1- openssl req -newkey rsa: 2048 -nodes -keyout domain.com.key -out domain.com.csr
2- Les fichiers SSL domain_com.crt et domain_com.ca-bundle copient le nouveau fichier dans coller domain.com.chained.crt
3- Ajouter des fichiers nginx: une. ssl_certificate /home/user/domain_ssl/domain.com.chained.crt; b. ssl_certificate_key /home/user/domain_ssl/domain.com.key;
Lates redémarre Nginx