2 votes

Impossible de se connecter au port HTTPS sur Ubuntu

J'ai installé un nouveau certificat SSL et configuré Nginx pour l'utiliser. Mais les requêtes sont interrompues lorsqu'on essaie de lancer HTTPS sur le site. Lorsque je me connecte à mon domaine sur le port 80, la connexion est établie, mais elle est interrompue sur le port 443. Je ne suis pas sûr qu'il y ait des valeurs par défaut sur Ubuntu qui empêchent la connexion. cURL est également bloqué sur l'adresse HTTPS mais répond au HTTP normal.

Le statut de l'UFW montre :

443  ALLOW    Anywhere

netstat -a montre :

tcp        0      0 *:https                 *:*                     LISTEN  

nmap localhost montre :

443/tcp  open  https

Le bloc pertinent dans la configuration de Nginx est :

server {
    listen 443;
    listen [::]:80 ipv6only=on;
    listen 80;
    root /path/to/app;
    server_name mydomain.com

    ssl on;
    ssl_certificate /etc/nginx/ssl/ssl-bundle.crt;
    ssl_certificate_key /etc/nginx/ssl/server.key;

    location / {
      proxy_pass http://mydomain.com;
      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Edit : après avoir essayé toute une série d'options de configuration de nginx, je doute vraiment que ce soit la configuration. Si le ssl-bundle.crt est défectueux, est-ce que cela causerait le dépassement de délai ? Si c'est le cas, je peux revenir à PositiveSSL pour le support.

0 votes

Telnet s'arrête parce que le serveur attend que vous démarriez avec un paquet SSL Client Hello, que vous n'envoyez pas. Avez-vous au moins essayé avec un navigateur ?

0 votes

Oui. Sur un navigateur, je peux accéder au site via HTTP, mais il est impossible d'y accéder via HTTPS. Je ne suis pas très familier avec le telneting ou le SSL. Comment pouvez-vous essayer le protocole avec un exemple de paquet ?

0 votes

Utilisez curl qui se charge de tout pour vous.

1voto

Antoine Combes Points 423

Essayez ça :

server {
    listen 443 ssl;
    listen [::]:80 ipv6only=on;
    listen 80;
    root /path/to/app;
    server_name mydomain.com

    ssl_certificate /etc/nginx/ssl/ssl-bundle.crt;
    ssl_certificate_key /etc/nginx/ssl/server.key;

    location / {
      proxy_pass http://mydomain.com;
      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

(retirer ssl on; , ajouter ssl à listen 443; )

0voto

Jens Bradler Points 5913

Je suis d'accord avec le commentaire de Steffen (listen 443 et listen 80 dans le même bloc de serveurs).

Veuillez traiter HTTP et HTTPS dans des blocs de serveurs différents. Je suppose que la deuxième directive listen a écrasé la première directive listen. De plus, j'ai manqué le mot clé "ssl" dans vos directives listen pour le port 443.

server {
    listen 80;
    listen [::]:80 ipv6only=on;
    root /path/to/app;
    server_name mydomain.com

    location / {
      proxy_pass http://mydomain.com;
      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

server {
    listen 443 ssl;
    listen [::]:443 ssl ipv6only=on;
    root /path/to/app;
    server_name mydomain.com

    ssl on;
    ssl_certificate /etc/nginx/ssl/ssl-bundle.crt;
    ssl_certificate_key /etc/nginx/ssl/server.key;

    location / {
      proxy_pass http://mydomain.com;
      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Comme l'a signalé l'utilisateur xofer, il est possible d'avoir HTTP et HTTPS dans un seul bloc serveur. Donc un exemple pour cette solution tout-en-un également :

server {
    listen 80;
    listen [::]:80 ipv6only=on;
    listen 443 ssl;
    listen [::]:443 ssl ipv6only=on;
    root /path/to/app;
    server_name mydomain.com

    ssl on;
    ssl_certificate /etc/nginx/ssl/ssl-bundle.crt;
    ssl_certificate_key /etc/nginx/ssl/server.key;

    location / {
      proxy_pass http://mydomain.com;
      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

0 votes

De Configuration des serveurs HTTPS : It is possible to configure a single server that handles both HTTP and HTTPS requests

0 votes

@xofer : Intéressant, mais il semble que le mot clé "ssl" était absent des directives du port 443. Donc peut-être que le port fonctionnait bien mais avec HTTP et non (comme prévu par les navigateurs) avec HTTPS.

0 votes

Répondra ici car vous serez tous les deux informés. J'ai essayé les deux et d'autres configurations de blocage de serveur. Mais je doute vraiment que ce soit un problème de configuration de nginx.

0voto

Simpleton Points 121

Le problème ne venait pas de Nginx et personne n'aurait pu m'aider à le résoudre. Je vais donc laisser ce message ici au cas où quelqu'un aurait ce problème à l'avenir.

Le problème était que le port 443 était fermé sur Cloudflare car j'étais sur le plan gratuit. Ils ne prennent pas en charge le SSL sur le plan gratuit.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X