J'ai réussi à créer mes certificats avec LE sans erreurs, j'ai également réussi à rediriger mon trafic du port 80 vers le port 443. Mais lorsque je recharge mon serveur nginx, je ne peux pas accéder à mon site Web. Les journaux d'erreurs Ngnix affichent cette ligne:
4 no "ssl_certificate" is defined in server listening on SSL port while SSL handshaking, client: 192.168.0.104, server: 0.0.0.0:443
Je pense que cela signifie qu'il ne peut pas trouver les certificats que j'ai ensuite parcourus vers le chemin des certificats et qu'ils sont tous les deux là, quel pourrait être le problème? Voici à quoi ressemble ma configuration Ngnix:
server {
listen 80;
server_name pumaportal.com www.pumaportal.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name pumaportal.com www.pumaportal.com;
add_header Strict-Transport-Security "max-age=31536000";
ssl_certificate /etc/letsencrypt/live/pumaportal.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/pumaportal.com/privkey.pem;
ssl_stapling on;
ssl_stapling_verify on;
access_log /var/log/nginx/sub.log combined;
location /.well-known {
alias /[MY PATH]/.well-known;
}
location / {
proxy_pass http://localhost:2000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
Tout semble assez simple, je ne comprends pas où pourrait être le problème.
Après avoir exécuté nginx -t, tout semble correct:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
nginx
ssl
lets-encrypt
Rémi
la source
la source
server
blocs? Qu'avez-vous fait exactement quand vous avez eu cette erreur?Réponses:
Je suppose que vous avez un autre serveur à l'écoute sur le port 443. Ce serveur n'a pas de ssl_certificate défini, et il est automatiquement sélectionné (SNI). Essayez de supprimer tous les liens symboliques de / etc / nginx / sites-enabled sauf celui-ci que vous souhaitez faire fonctionner (si c'est possible, sinon vérifiez tous vos serveurs pour écouter 443 sans être configuré correctement).
la source
J'ai corrigé ce même problème plus tôt ce matin, donc je suis ici pour clarifier le point de CA (qui, maintenant que je comprends le problème, était bien fait), vous avez probablement deux blocs de serveur:
SNI ne correspondra qu'à ceux qui sont étiquetés avec un
ssl
écouteur. Cependant, le serveur par défaut récupérera tout le trafic entrant sur 443, indépendamment de SSL ou non. Par conséquent, cela empêche en fait la SNI de fonctionner, dès le départ, en accumulant tout le trafic pour elle-même.Symptômes:
nginx -t
et un rechargement de service)Solutions:
J'ai résolu le problème ce matin en supprimant le bloc serveur par défaut, permettant ainsi à SNI de correspondre sur les écouteurs SSL.
Une solution alternative serait d'ajouter l'
ssl
écouteur et lesssl_certificate
lignes au bloc serveur afin que SNI soit essentiellement activé sur votre hôte par défaut. Vous obtiendrez toujours des erreurs SSL, ce n'est donc pas la meilleure solution, mais cela permettra à votre SNI de fonctionner :)la source
Postulez
default_server
sur example.com ou www.example.com. Pas les deux.Par conséquent, cela fonctionnera:
Remarque sur les hôtes virtuels: assurez-vous que le
default_server
paramètre n'est défini nulle part ailleurs - si vous avez plusieurs hôtes sur le serveur.la source
Tard dans le jeu comme d'habitude, mais puisque cela m'a aidé ... Vérifiez si le certificat est mal formé. Lors de la construction du crt "unifié" (crt + intermédiaire), faire
J'ai en quelque sorte perdu un LF et j'ai obtenu une ligne comme celle-ci:
au lieu de
et nginx ne prendrait pas le certificat et échouerait avec l'erreur mentionnée ci-dessus.
Faire
m'a donné la clé pour openssl serait une erreur.
la source
Vérifiez si vos autorisations de fichier pour les certificats sont correctes. Veuillez afficher la liste du répertoire (
ls -la
)la source