Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 13/10/2021, à 15:53

Wagab

NGINX - Reverse Proxy - Problème de certificat

Bonjour à toutes et à tous,

J'ai un soucis avec un reverse proxy sous NGINX sur lequel je suis depuis 2 jours sans succès. Mon sites-enabled se présentait comme suit avant modif :
toto.mondomaine1.com.conf
taao.mondomaine1.com.conf
toruuo.mondomaine1.com.conf
tozerg.mondomaine1.com.conf
toazerao.mondomaine1.com.conf
totozear.mondomaine1.com.conf


Tous les vhosts en mondomaine1.com possèdent le même certif wildcard *.mondomaine1.com. Cela fonctionne sans aucun soucis. Lundi, j'ai ajouté le vhost trucquimarchepasbien.mondomaine2.com ce qui donne :
toto.mondomaine1.com.conf
taao.mondomaine1.com.conf
toruuo.mondomaine1.com.conf
tozerg.mondomaine1.com.conf
trucquimarchepasbien.com.conf
toazerao.mondomaine1.com.conf
totozear.mondomaine1.com.conf

J'ai créé le certificat avec les SAN trucquimarchepasbien.com et www.trucquimarchepasbien.com. un nginx -t me dit ok.

Donc je teste dans un navigateur https://trucquimarchepasbien.com et je me retrouve avec une erreur de certificat mismatched. Je regarde le certif, c'est le *.mondomaine1.com qui est publié. J'accepte l'erreur, je tombe bien sur mon serveur. Donc la partie reverse fonctionne mais pas le certificat.

Je fais donc un tail -f /var/log/nginx/*.log | grep monippublique. Puis je retrouve sur un navigateur, je teste. J'arrive sur l'erreur de certificat mismatched, je regarde mes logs, rien (????). J'accepte l'erreur, j'arrive sur mon site. Je vois bien des logs venant du bon vhost. Je ne comprends donc pas, qui/quoi fournit le certificat wildcard. Car d'après les logs, je ne passe pas par un des vhosts en mondomaine1.com lorsque j'ai l'erreur dans le navigateur puis, une fois acceptée, j'arrive dans le bon vhost. J'ai regardé dans les fichiers de base de nginx et je n'ai pas trouvé (mais j'ai sûrement mal cherché).

Pour info, voici mon vhost trucquimarchepasbien.com :

server {
        server_name trucquimarchepasbien.com;

        listen 443;
        ssl on;

        ssl_certificate /etc/ssl/trucquimarchepasbien.com/chain.trucquimarchepasbien.com.pem;
        ssl_certificate_key /etc/ssl/trucquimarchepasbien.com/trucquimarchepasbien.com.key;

        ssl_stapling on;
        ssl_stapling_verify on;
        resolver 9.9.9.9;

        location / {
        proxy_pass http://SRV-WEB/;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $http_host;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Host $http_host;
        proxy_redirect off;

        proxy_connect_timeout 300;
        proxy_send_timeout 300;
        proxy_read_timeout 300;
        send_timeout    300;

        access_log /var/log/nginx/access_trucquimarchepasbien.log;
        error_log /var/log/nginx/error_trucquimarchepasbien.log;

        }

}
server {
        listen 80;
        server_name trucquimarchepasbien.com;

        rewrite ^ https://$host$request_uri permanent;

        access_log /var/log/nginx/access_debug_trucquimarchepasbien.log;
        error_log /var/log/nginx/error_debug_trucquimarchepasbien.log;



}

Si jamais qqun peut m'aider, ce serait cool. Sinon tant pis :'( !

Merci d'avance de m'avoir lu.
Wagab

Dernière modification par bruno (Le 09/03/2023, à 08:26)

Hors ligne

#2 Le 15/10/2021, à 06:44

bruno

Re : NGINX - Reverse Proxy - Problème de certificat

Bonjour,

Il faudrait voir les configuration des autres hôtes virtuels. Il doit y avoir une directive quelque part qui fait que c'est le certificat pour *mondomaine1.com qui est fourni pâr défaut. Il faut vérifier qu'aucune directive listen 443 ne contient defaul_server. D'ailleurs tu devrais plutôt avoir :

server {
        server_name trucquimarchepasbien.com;
        listen 443 ssl;

        ssl_certificate /etc/ssl/trucquimarchepasbien.com/chain.trucquimarchepasbien.com.pem;

et pour forcer le HTTPS mieux vaut une redirection qu'un réécriture :

server {
        listen 80;
        server_name trucquimarchepasbien.com;

       return 301 https://$server_name$request_uri;

Hors ligne

#3 Le 15/10/2021, à 15:22

PierreLo

Re : NGINX - Reverse Proxy - Problème de certificat

Bonjour Bruno,

Merci pour ta 1ère réponse.

Il n'y pas de default_server dans aucun des autres vhost sur les directives SSL.
Ok pour la redirection permanente 301, merci.

Voici la configuration des autres vhosts de ce revese proxy Nginx.

first vhost

server {
        server_name xxx.xxxxxx.com;

        listen 443 ssl;

        ssl_certificate /etc/ssl/xxxxxxxx.com/chain-sectigo.pem;
        ssl_certificate_key /etc/ssl/xxxxxxxx.com/wildcard.xxxxxxx.com.key;

        ssl_stapling on;
        ssl_stapling_verify on;
        resolver 9.9.9.9;

        location / {
        proxy_pass http://srv-xxx/;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Host $http_host;
        proxy_set_header Host $http_host;
        proxy_redirect off;

        proxy_connect_timeout 300;
        proxy_send_timeout 300;
        proxy_read_timeout 300;
        send_timeout    300;

        access_log /var/log/nginx/access_xxx_xxxxxxx.log;
        error_log /var/log/nginx/error_xxx_xxxxxx.log;
        }
}

server {
        listen 80;
        server_name aaa.xxxxx.com;

        rewrite ^ https://$host$request_uri permanent;

        access_log /var/log/nginx/access_xxx_debug_xxx.log;
        error_log /var/log/nginx/error_xxx_debug_xxx.log;
}

Second vhost

server {
        listen 443 ssl;
        server_name xxxxxxxx.com;
        return 301 https://www.xxxxxxxx.com$request_uri;

        ssl_certificate /etc/ssl/xxxxxxxxx.com/chain-sectigo.pem;
        ssl_certificate_key /etc/ssl/xxxxxxxxx.com/wildcard.xxxxxxx.com.key;

#       ssl_stapling on;
#       ssl_stapling_verify on;
#       resolver 9.9.9.9;

        access_log /var/log/nginx/access_xxxxxxx.log;
        error_log /var/log/nginx/error_xxxxxxx.log;
}

server {
        listen 80;
        server_name xxxxxxxx.com;
        fastcgi_param HTTP_PROXY "";
        return 301 https://www.xxxxxxxx.com$request_uri;

        access_log /var/log/nginx/access_xxxxxxxx.log;
        error_log /var/log/nginx/error_xxxxxxx.log;
}

Third vhost

server {
        server_name xxx.xxxxxxxx.com;

        listen 443 ssl;

        ssl_certificate /etc/ssl/xxxxxxxx.com/chain-sectigo.pem;
        ssl_certificate_key /etc/ssl/xxxxxxx.com/wildcard.xxxxxx.com.key;

        ssl_stapling on;
        ssl_stapling_verify on;
        #ssl_trusted_certificate /etc/ssl/xxxxxxxx.com/chain-sectigo.pem;
        #ssl_trusted_certificate /etc/ssl/xxxxxxxx.com/Intermediate-Comodo-PositiveSSL_Wildcard-RSA-SHA2-primary.pem;
        resolver 9.9.9.9;

        location / {
        proxy_pass http://srv-xxx-xxxx/;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Host $http_host;
        proxy_set_header Host $http_host;
        proxy_redirect off;
#       client_max_body_size 10m;

        proxy_connect_timeout 300;
        proxy_send_timeout 300;
        proxy_read_timeout 300;
        send_timeout    300;

        access_log /var/log/nginx/access_xxx_xxxxxxxx.log;
        error_log /var/log/nginx/error_xxx_xxxxxxx.log;
        }
}
server {
        listen 80;
        server_name xxx.xxxxxxx.com;

        location / {
        proxy_pass http://srv-xxx-xxxx/;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Host $http_host;
        proxy_set_header Host $http_host;
        proxy_redirect off;
#       client_max_body_size 10m;

        proxy_connect_timeout 300;
        proxy_send_timeout 300;
        proxy_read_timeout 300;
        send_timeout    300;

        access_log /var/log/nginx/access_xxx_xxxxxxxx.log;
        error_log /var/log/nginx/error_xxx_xxxxxx.log;
        }
}

Fourth vhost

server {
        server_name xxx.xxxxx.com;

        listen 443 ssl;

        ssl_certificate /etc/ssl/xxxxxxx.com/chain-sectigo.pem;
        ssl_certificate_key /etc/ssl/xxxxxxx.com/wildcard.xxxxxxx.com.key;

        ssl_stapling on;
        ssl_stapling_verify on;
        resolver 9.9.9.9;

        location / {
        proxy_pass http://srv-xxx-xxx/;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Host $http_host;
        proxy_set_header Host $http_host;
        proxy_redirect off;

        proxy_connect_timeout 300;
        proxy_send_timeout 300;
        proxy_read_timeout 300;
        send_timeout    300;

        access_log /var/log/nginx/access_xxx_xxxxxxxx.log;
        error_log /var/log/nginx/error_xxx_xxxxxx.log;
        }
}
server {
        listen 80;
        server_name xxx.xxxxxxxx.com;

        location / {
        proxy_pass http://srv-xxx-xxx/;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Host $http_host;
        proxy_set_header Host $http_host;
        proxy_redirect off;

        proxy_connect_timeout 300;
        proxy_send_timeout 300;
        proxy_read_timeout 300;
        send_timeout    300;

        access_log /var/log/nginx/access_xxx_xxxxxx.log;
        error_log /var/log/nginx/error_xxx_xxxxxxx.log;
        }
}

Fifth vhost

server {
        server_name xxx.xxxxxx.com;

        listen 443 ssl;

        ssl_certificate /etc/ssl/xxxxxx.com/chain-sectigo.pem;
        ssl_certificate_key /etc/ssl/xxxxxxxx.com/wildcard.xxxxxxxx.com.key;

        ssl_stapling on;
        ssl_stapling_verify on;
        resolver 9.9.9.9;

        location / {
        proxy_pass http://srv-xxx-xxx/;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Host $http_host;
        proxy_set_header Host $http_host;
        proxy_redirect off;

        proxy_connect_timeout 300;
        proxy_send_timeout 300;
        proxy_read_timeout 300;
        send_timeout    300;

        access_log /var/log/nginx/access_xxxxxxxx.log;
        error_log /var/log/nginx/error_xxxxxx.log;
        }
}
server {
        listen 80;
        server_name xxx.xxxxxxx.com;

        location / {
        proxy_pass http://srv-xxx-xxx/;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Host $http_host;
        proxy_set_header Host $http_host;
        proxy_redirect off;

        proxy_connect_timeout 300;
        proxy_send_timeout 300;
        proxy_read_timeout 300;
        send_timeout    300;

        access_log /var/log/nginx/access_xxxxxxx.log;
        error_log /var/log/nginx/error_xxxxxxx.log;
        }
}

Sixth vhost

server {
        server_name xxxx.xxxxxxx.com;

        listen 443 ssl;

        ssl_certificate /etc/ssl/xxxxxxxx.com/chain-sectigo.pem;
        ssl_certificate_key /etc/ssl/xxxxxx.com/wildcard.xxxxxxx.com.key;

        ssl_stapling on;
        ssl_stapling_verify on;
        resolver 9.9.9.9;

        location / {
        proxy_pass http://srv-xxx-xxx/;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Host $http_host;
        proxy_set_header Host $http_host;
        proxy_redirect off;

        proxy_connect_timeout 300;
        proxy_send_timeout 300;
        proxy_read_timeout 300;
        send_timeout    300;

        access_log /var/log/nginx/access_xxxx_xxxxxx.log;
        error_log /var/log/nginx/error_xxxx_xxxxxxx.log;
        }
}
server {
        listen 80;
        server_name xxxx.xxxxxxx.com;

        location / {
        proxy_pass http://srv-xxx-xxx/;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Host $http_host;
        proxy_set_header Host $http_host;
        proxy_redirect off;

        proxy_connect_timeout 300;
        proxy_send_timeout 300;
        proxy_read_timeout 300;
        send_timeout    300;

        access_log /var/log/nginx/access_xxxx_xxxxxxx.log;
        error_log /var/log/nginx/error_xxxx_xxxxxxx.log;
        }
}

Seventh vhost

server {
        listen 443 ssl;
        server_name rec.xxxxxxxx.com;

        ssl_certificate /etc/ssl/xxxxxxx.com/chain-sectigo.pem;
        ssl_certificate_key /etc/ssl/xxxxxxx.com/wildcard.xxxxxx.com.key;

        ssl_stapling on;
        ssl_stapling_verify on;

        resolver 9.9.9.9;

        location / {
        proxy_pass https://ip_server;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Host $http_host;
        proxy_set_header Host $http_host;
        proxy_redirect off;

        proxy_connect_timeout 300;
        proxy_send_timeout 300;
        proxy_read_timeout 300;
        send_timeout    300;

        access_log /var/log/nginx/access_xxx.xxxxxxx.log;
        error_log /var/log/nginx/error_xxx.xxxxxx.log;
        }
}
server {
        listen [::]:80;
        server_name xxx.xxxxxxx.com;
        return 301 https://$host$request_uri;
}

Eighth vhost

server {
        server_name xxxxxx.xxxxxx.com;

        listen 443 ssl;

        ssl_certificate /etc/ssl/xxxxxxxx.com/chain-sectigo.pem;
        ssl_certificate_key /etc/ssl/xxxxxx.com/wildcard.xxxxxx.com.key;

        ssl_stapling on;
        ssl_stapling_verify on;
        resolver 9.9.9.9;

        location / {
        proxy_pass http://srv-xxx/;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Host $http_host;
        proxy_set_header Host $http_host;
        proxy_redirect off;

        proxy_connect_timeout 300;
        proxy_send_timeout 300;
        proxy_read_timeout 300;
        send_timeout    300;

        access_log /var/log/nginx/access_xxx_xxxxxxx.log;
        error_log /var/log/nginx/error_xxx_xxxxx.log;
        }
}
server {
        listen 80;
        server_name xxxxxx.xxxxxxx.com;

        rewrite ^ https://$host$request_uri permanent;

        access_log /var/log/nginx/access_dtc_debug_xxxxxx.log;
        error_log /var/log/nginx/error_dtc_debug_xxxxxx.log;
}

Ninth vhost

server {
        listen 443;
        server_name www.xxxxxxxx.com;

        ssl on;

        ssl_certificate /etc/ssl/xxxxxxx.com/chain-sectigo.pem;
        ssl_certificate_key /etc/ssl/xxxxxxxx.com/wildcard.xxxxxxx.com.key;

        ssl_stapling on;
        ssl_stapling_verify on;

        resolver 9.9.9.9;

        location / {
        proxy_pass https://ip_server;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Host $http_host;
        proxy_set_header Host $http_host;
        proxy_redirect off;

        proxy_connect_timeout 300;
        proxy_send_timeout 300;
        proxy_read_timeout 300;
        send_timeout    300;

        access_log /var/log/nginx/access_www.xxxxxxx.log;
        error_log /var/log/nginx/error_www.xxxxxxx.log;
        }
}
server {
        listen [::]:80;
        fastcgi_param HTTP_PROXY "";
        server_name www.xxxxxx.com;
        return 301 https://$host$request_uri;
}

Tenth vhost et donc celui qui nous pose problème et qui se retrouve avec le certificat wildcard qui couvre les 9 permiers vhost

server {
        server_name xxxxxxx.com;
        listen 443 ssl;

        ssl_certificate /etc/nginx/xxxxx.pem;
        ssl_certificate_key /etc/nginx/xxxxx.com.key;

#       ssl_stapling on;
#       ssl_stapling_verify on;
#       resolver 9.9.9.9;

        location / {
        proxy_pass http://srv-xxxxx;
        include proxy_params;
#        proxy_set_header X-Real-IP $remote_addr;
#        proxy_set_header Host $http_host;
#        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
#        proxy_set_header X-Forwarded-Host $http_host;
#        proxy_redirect off;

        proxy_connect_timeout 300;
        proxy_send_timeout 300;
        proxy_read_timeout 300;
        send_timeout    300;

        access_log /var/log/nginx/access_xxxxxx.log;
        error_log /var/log/nginx/error_xxxxxx.log;
        }
}
server {
        listen 80;
        server_name xxxxxxx.com;

        return 301 https://$server_name$request_uri;
        fastcgi_param HTTP_PROXY "";
#       rewrite ^ https://$host$request_uri permanent;

        access_log /var/log/nginx/access_debug_xxxxxx.log;
        error_log /var/log/nginx/error_debug_xxxxxx.log;
}

J'ai lu que l'ordre des vhosts avait une importance, est-ce que tu confirmes cela ?
Il faut savoir que le reverse proxy n'est qu'un intermédiaire et renvoi les requêtes vers les serveurs en interne qui hébergent les solutions.

A ta disposition si tu as besoin d'autres éléments.

PIerreLo

Hors ligne

#4 Le 15/10/2021, à 15:46

bruno

Re : NGINX - Reverse Proxy - Problème de certificat

Cela me semble correct.
Il faut voir si ton certificat est bien valide et accessible en lecture pour nginx.
Il faut vérifier que le nom de domaine pointe bien vers ton IP publique, en IPv4 et en IPv6 le cas échéant.
Il faut bien regarder les logs d'accès et d'erreur des differents hôtes (notamment le premier et le dernier) au moment où tu fais la requête.
Il faut aussi t’assurer d'avoir relancé le service nginx après toute modification.
L'ordre des hôtes virtuels n'a d'importance que lorsque la requête vers un domaine donné ne trouve pas de directive server_name correspondant. C'est alors le premier de la liste alphabétique (ou celui ayant un default_server) qui est utilisé.

N.B. : ton premier hôt semble faire la même chose que le dernier avec un nom de domaine différent…

Hors ligne

#5 Le 15/10/2021, à 19:17

PierreLo

Re : NGINX - Reverse Proxy - Problème de certificat

Yes le nom de domaine pointe bien vers l'IP publique réservée pour le reverse proxy.

Quand on a un domaine en wildcard format *.domain.com puis que l'on ajoute un nouveau vhost sous certificat pointant vers domain.com. Est-ce que le certificat avec la wildcard va prendre le prendre le pas sur le vhost domain.com sans sous-domaine spécifié ?
Je pense que c'est ce qu'il se passe et c'est pourquoi c'est le certificat avec wildcard qui est utilisé pour domain.com Du coup j'ai bien envie de faire un nouveau certificat avec le domaine www.domaine.com histoire de lever ce doute.

Hors ligne

#6 Le 15/10/2021, à 19:29

bruno

Re : NGINX - Reverse Proxy - Problème de certificat

Le certificat utilisé est celui indiqué dans l'hôte virtuel. Grâce à SNI le nom de domaine est envoyé pendant la négociation TLS. C'est ce qui permet d'héberger plusieurs domaine en HTTPS sur la même IP.
Que le certificat soit un wildcard n'a aucune incidence normalement.

Comme je ne vois pas d'erreur dans ta configuration nginx et si tu as bien redémarré le service, c'est probablement un problème de certificat.

Hors ligne

#7 Le 18/10/2021, à 21:53

PierreLo

Re : NGINX - Reverse Proxy - Problème de certificat

Hello Bruno,

Alors, j'ai troubleshooter un peu plus mon problème et même en désactivant (à l'instant) tous mes autres vhost, le certificat associé à mon hébergement est toujours le wildcard *.domain.com et les autres vhost (désactivés) quand j'essaie d'aller sur leurs URL ça me renvoie vers le seul vhost encore actif. (désolé pour cette partie qui n'est pas facile à transcrire par écrit)

J'ai aussi refait mon certificat pour ce site et tester différentes configurations pour les clés de certificat concaténées dans un fichier crt ou pem mais sans succès.

J'ai regardé dans le fichier nginx.conf et le bloc concernant les SSL Settings indique ceci :

##
        # SSL Settings
        ##

        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_prefer_server_ciphers on;
        ssl_ciphers                 ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:$
        ssl_dhparam /etc/ssl/private/dhparams.pem;
        ssl_ecdh_curve              secp384r1;
        ssl_session_cache shared:SSL:20m;
        ssl_session_timeout 180m;
        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

Et le bloc vhost

##
        # Virtual Host Configs
        ##

        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;

Sincèrement je ne vois rien qui pourrait expliquer pourquoi j'ai mon vhost qui utilise un certificat ne le concernant pas.

Hors ligne

#8 Le 18/10/2021, à 22:25

PierreLo

Re : NGINX - Reverse Proxy - Problème de certificat

Alors il me semble que mon problème provient des directives listen qui écoute toutes sur le port 443 et bien qu'il y ai le SNI, il n'en tient pas rigueur pour cela.

Hors ligne

#9 Le 19/10/2021, à 08:53

bruno

Re : NGINX - Reverse Proxy - Problème de certificat

même en désactivant (à l'instant) tous mes autres vhost, le certificat associé à mon hébergement est toujours le wildcard *.domain.com

Si je comprends bien tu n'as laissé que cet hôte virtuel activé :

server {
        server_name xxxxxxx.com;
        listen 443 ssl;

        ssl_certificate /etc/nginx/xxxxx.pem;
        ssl_certificate_key /etc/nginx/xxxxx.com.key;

et le navigateur te renvoie toujours une erreur de certificat en présentant celui de l'autre nom de domaine.

C'est donc soit un problème de cache : celui du navigateur web ou un proxy /cache entre toi et le serveur web, soit le certificat /etc/nginx/xxxxx.pem qui est identique à celui de l'autre domaine (à tester avec openssl).

Et pour enlever tout doute sur la capacité de nginx à faire du SNI, donne-nous le retour de :

nginx -V

Dernière modification par bruno (Le 19/10/2021, à 09:45)

Hors ligne

#10 Le 19/10/2021, à 10:56

PierreLo

Re : NGINX - Reverse Proxy - Problème de certificat

Oui j'avais laissé enabled que le vhost qui pose problème et oui, il continuait de prendre le certificat wildcard qui est attaché aux vhost que j'avais désactivé, complètement hallucinant.
Je me suis posé une question, est-ce que Nginx est capable de faire une association certificat/SNI juste avec une partie d'un SNI ? En gros comme s'il fait un grep sur un mot clef du SNI ? C'est tordu je sais mais les deux domaines comporte un nom principal identique. C'est comme si on avait *.example.com et www.weexample.com (c'est la différence que l'on a entre nos deux domaines.
Ne devrais-je pas demander un certificat wildcard *.weexample pour notre second domaine ?

Yes j'avais déjà vérifié que Nginx pouvait bien gérer le SNI.

nginx version: nginx/1.14.2
built with OpenSSL 1.1.1d  10 Sep 2019
TLS SNI support enabled

PS: et pour le problème de cache je test toujours avec une nouvelle fenêtre en navigation privée histoire de ne pas avoir de cache wink

Dernière modification par PierreLo (Le 19/10/2021, à 10:57)

Hors ligne

#11 Le 19/10/2021, à 11:59

bruno

Re : NGINX - Reverse Proxy - Problème de certificat

Oui j'avais laissé enabled que le vhost qui pose problème et oui, il continuait de prendre le certificat wildcard qui est attaché aux vhost que j'avais désactivé, complètement hallucinant.

Est-ce que tu as vérifié ton certificat sur le serveur ?

openssl x509 -in /etc/nginx/xxxxx.pem -text -noout

Est-ce que tu as bien vérifié qu'il n'ya avait pas d'autres directives ssl_certificate dans la configuration de nginx, notamment dans un bloc http ?

rgrep ssl_certificate /etc/nginx/

Tu peux aussi tester avec un certificat généré par Letsencrypt. Cela permettra d'éliminer une erreur due à l'autorité de certification.

Pour le SNI, nginx le fait par défaut en sa basant sur le nom de domaine envoyé par la requête du client.

Tu peux aussi tester à distance avec openssl :

openssl s_client -connect example.com:443

Hors ligne

#12 Le 19/10/2021, à 17:39

PierreLo

Re : NGINX - Reverse Proxy - Problème de certificat

C'est complètement dingue, c'est pareil avec un certificat Let's Encrypt...

Je regarde plus tard pour le reste et je te tiens au courant wink

Hors ligne

#13 Le 19/10/2021, à 21:14

PierreLo

Re : NGINX - Reverse Proxy - Problème de certificat

Alors pour le test openssl -connect j'ai un timeout :

139897153520768:error:0200206E:system library:connect:Connection timed out:../crypto/bio/b_sock2.c:110:
139897153520768:error:2008A067:BIO routines:BIO_connect:connect error:../crypto/bio/b_sock2.c:111:
connect:errno=110

Cela dit l'accès au site fonctionne bien mais c'est peut-être parce que je le fait depuis le reverse proxy en lui-même.

Et pour la recherche de directives SSL , rien de particulier à priori et pas de fichier de conf autre ceux dans sites-available.
Pour le check du certificat depuis le serveur via openssl, on est bon aussi.

Hors ligne

#14 Le 20/10/2021, à 12:45

bruno

Re : NGINX - Reverse Proxy - Problème de certificat

Ce n'est pas normal, même en testant de puis le serveur lui-même. Si tuas bien remplacé example.com par le nom de domaine qui pose problème dans la commande :

openssl s_client -connect example.com:443

Cela signifie que le serveur example.com n'accepte pas les connexions sur le port 443.

Hors ligne