J'essaie de configurer SSL sur Nginx. Cela ne fonctionne pas et j'obtiens l'erreur suivante dans le journal des erreurs, qui est transmis de la bibliothèque OpenSSL avec laquelle nginx a été compilé. Je ne sais pas ce qu'est cette bibliothèque, mais c'est la version 0.8.54 de nginx, et je l'ai installée en utilisant apt-get sur Ubuntu Linux.
2012/02/21 07:06:33 [emerg] 4071#0:
SSL_CTX_use_PrivateKey_file("/exequias/certs/exequias.com.key") failed (SSL:
error:0906406D:PEM routines:PEM_def_callback:problems getting password error:
0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:
SSL_CTX_use_PrivateKey_file:PEM lib)
Je me suis assuré que les autorisations de fichier sur le fichier de clé privée n'empêchent pas nginx de le lire. Il s'agit d'une clé privée RSA, générée avec openssl rsa
.
Des idées ce qui pourrait être à l'origine de cela?
Je l'ai compris ... le fichier de clé privée utilisé avec nginx doit pas avoir une phrase secrète. J'ai supprimé la phrase secrète et cela a fonctionné.
Supprimez la phrase de passe clé:
openssl rsa -in key.pem -out newkey.pem
Si le certificat et la clé sont ensemble:
openssl rsa -in mycert.pem -out newcert.pem
openssl x509 -in mycert.pem >>newcert.pem
Parce que vous générez le fichier .crt avec une phrase secrète, vous devez donc spécifier la même phrase secrète pour votre fichier .key et .crt dans Nginx conf comme ceci
server {
ssl_password_file /path-to-your-passphrase/ssl.pass;
}
Voir Nginx Doc
Ou si vous n'avez pas besoin de la phrase secrète pour votre fichier cert, utilisez simplement ssh-keygen
outil pour générer le fichier comme suit:
ssh-keygen -t rsa
La question est un peu ancienne maintenant, et nginx prend en charge la phrase secrète au démarrage depuis au moins la version 1.2. Mais le problème est toujours d'actualité car cette capacité a été supprimée de debian dans la dernière version, la version 8 avec nginx 1.6. La raison en est que l'entrée de phrase secrète n'a pas été implémentée dans le script systemd pour nginx, alors qu'elle l'a été pour Apache. Le lancement manuel de nginx fonctionne simplement, et ce n'est pas trop un problème car une intervention manuelle est de toute façon requise, il n'y a pas d'utilisation de systemd ici.
Référence: https://forum.nginx.org/read.php?2,262900,262931#msg-262931