[résolu]Nginx ssl et multisite

Bonjour! Mes deux sites lelogisencorse.ddns.net et seafile.julously.com fonctionnent en http et sont hébergés sur mon raspberry avec Nginx. J’ai voulu passer en https avec letsencrypt. Pas de soucis pour avoir les certificats avec les commandes

letsencrypt certonly --rsa-key-size 4096 --webroot -w /var/www/logis/grav-admin -d lelogisencorse.ddns.net

letsencrypt certonly --rsa-key-size 4096 --webroot -w /var/www/mycloud/seafile-server-latest/seahub -d seafile.julously.com

Je mets le premier (seafile) en « route » après avoir rajouté la conf qui va bien : ca tourne, cadenas vert cool… Je fais pareil avec le second, et patatra bad_cert blabla… Je reprends mes fichiers dans /etc/nginx/sites/available et effectivement, un raté de copier/collé et j’avais les chemins du certificat ssl du premier dans le fichier de conf du second… Je remets tout ça comme il faut et… Cadenas vert! pint j’envisage sereinement la fin de soirée (je me suis battu tout le dimanche avec nginx) dans le canapé avec madame!

Mais voila que mon client seafile ne se reconnecte pas… je rallume firefox et PAF! Bad-cert! alors qu’il fonctionnait bien il y a quelques minutes! Pire, il m’annonce que seafile (le premier donc) utilise le certificat du second!

seafile.julously.com uses an invalid security certificate. The certificate is only valid for lelogisencorse.ddns.net Error code: SSL_ERROR_BAD_CERT_DOMAIN

J’ai vérifié trois fois, les chemins sont bons! J’ai vidé le cache firefox sans succès et de toutes façons, mon tel android me dit la même chose via l’appli qui fonctionnait ce matin avec le même fichier de conf…

Du coup je mets hors ligne logis (je supprime le lien vers sites-enabled) : la, seafile fonctionne! Je remets logis en ligne et la, c’est lui qui ne fonctionne plus… Comme si le premier en ligne gardait la priorité en terme de ssl…

Des idées? Merci!!

tu pourrais nous donner ta conf nginx ?
Pour moi, il s’agit juste du mauvais certificat comme le dit le navigateur.

ben non, puisque l’erreur change de site selon lequel est mis en ligne en premier… Cela dit j’ai deux fichiers de conf :
server {
listen 80;
server_name lelogisencorse.ddns.net www.lelogisencorse.ddns.net;

#    error_page   500 502 503 504  /50x.html;
    access_log      /var/log/nginx/logis.access.log;
    error_log       /var/log/nginx/logis.error.log;

    # force redirect http to https
    rewrite ^ https://$http_host$request_uri? permanent;
        server_tokens off;
 #   location = /50x.html {
 #   root html;
 #   }
}
server {
        listen 443;
root /var/www/logis/grav-admin;
        ssl on;
        ssl_certificate /etc/letsencrypt/live/lelogisencorse.ddns.net/fullchain.pem;        # path to your cacert.pem
        ssl_certificate_key /etc/letsencrypt/live/lelogisencorse.ddns.net/privkey.pem;    # path to your privkey.pem
        server_name lelogisencorse.ddns.net;
        ssl_session_timeout 5m;
        ssl_session_cache shared:SSL:5m;
access_log      /var/log/nginx/logis.access.log;
    error_log       /var/log/nginx/logis.error.log;

        # Diffie-Hellman parameter for DHE ciphersuites, recommended 2048 bits
        ssl_dhparam /etc/nginx/ssl/dhparam4.pem;

        # secure settings (A+ at SSL Labs ssltest at time of writing)
        # see https://wiki.mozilla.org/Security/Server_Side_TLS#Nginx
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES256$
        ssl_prefer_server_ciphers on;

    location / {
       root /var/www/logis/grav-admin;
       index  index.php;
       if (!-e $request_filename){ rewrite ^(.*)$ /index.php last; }
    }

    location ~ \.php$ {
        root /var/www/logis/grav-admin;
            try_files $uri =404;
            fastcgi_pass unix:/var/run/php5-fpm.sock;
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_index index.php;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
    }
}

et le second
server {
listen 80;
server_name seafile.julously.com;
root /var/www/mycloud/seafile-server-latest/seahub;
rewrite ^ https://$http_host$request_uri? permanent; # force redirect http to https
server_tokens off;
}
server {
listen 443;
root /var/www/mycloud/seafile-server-latest/seahub;
ssl on;
ssl_certificate /etc/letsencrypt/live/seafile.julously.com-0001/fullchain.pem; # path to your cacert.pem
ssl_certificate_key /etc/letsencrypt/live/seafile.julously.com-0001/privkey.pem; # path to your privkey.pem
server_name seafile.julously.com;
ssl_session_timeout 5m;
ssl_session_cache shared:SSL:5m;

        # Diffie-Hellman parameter for DHE ciphersuites, recommended 2048 bits
        ssl_dhparam /etc/nginx/ssl/dhparam4.pem;

        # secure settings (A+ at SSL Labs ssltest at time of writing)
        # see https://wiki.mozilla.org/Security/Server_Side_TLS#Nginx
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES256$
        ssl_prefer_server_ciphers on;

        proxy_set_header X-Forwarded-For $remote_addr;

        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
        server_tokens off;

        location / {
            proxy_pass         http://127.0.0.1:8000;
            proxy_set_header   Host $host;
            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 $server_name;
            proxy_set_header   X-Forwarded-Proto https;

            access_log      /var/log/nginx/seahub.access.log;
            error_log       /var/log/nginx/seahub.error.log;

            proxy_read_timeout  1200s;

            client_max_body_size 0;
        }
   location /seafhttp {
            rewrite ^/seafhttp(.*)$ $1 break;
            proxy_pass http://127.0.0.1:8082;
            client_max_body_size 0;
            proxy_connect_timeout  36000s;
            proxy_read_timeout  36000s;
            proxy_send_timeout  36000s;
            send_timeout  36000s;
        }
        location /media {
            root /var/www/mycloud/seafile-server-latest/seahub;
        }
    }

Séparé, les conf paraissent bonne.
Quand est il de sudo /usr/sbin/nginx -T tu auras ta conf tel que nginx la comprend.

ca m’a permis de voir un « vieux » fichier de conf dans enabled qui visiblement mettait le bazar… Tout fonctionne bien maintenant!
Merci!

1 « J'aime »

Pense à changer la titre en [résolu]

1 « J'aime »

Je viens d’avoir le même problème en mettant un autre site en ligne… un bug dans la création du lien symbolique : même si je suis dans le répertoire /etc/nginx il faut que je tape les chemins complèts des liens pour que le fichier en lien ait un contenu : sinon, il est créé mais est vide…

sudo ln -s /etc/nginx/sites-available/julously.conf.ssl /etc/nginx/sites-enabled/julously.conf.ssl

ça fonctionne. Par contre avec un

cd /etc/nginx sudo ln - s sites-available/julously.conf.ssl sites-enabled/julously.conf.ssl

le fichier créé est vide, et donc, on retombe sur un autre site et donc, un mauvais certificat!

Je passe en résolu!

Merci!

Oui,
Les liens symboliques doivent être écrit avec le chemin complet !

Je trouve quand même ça assez surprenant… Mais bon. L’essentiel est que ca fonctionne!