Auteur Sujet: Vhost piège sur l'ip en https  (Lu 2226 fois)

0 Membres et 1 Invité sur ce sujet

Groumph

  • Abonné SFR THD (câble)
  • *
  • Messages: 50
  • Nantes (44)
Vhost piège sur l'ip en https
« le: 26 avril 2018 à 02:30:43 »
Bonjour à tous,
j'ai pour des besoins modestes (2 tout petits sites) un serveur Apache 2.4 (Debian 9), sur lequel j'ai récemment installé Let's Encrypt, au passage merci encore à Vivien et ses explications au top sur "les erreurs à ne pas faire", j'en ai eu bien besoin ;D

Disclaimer : je suis une quiche en administration, ça c'est dit.
TL;DR : comment faire un Vhost "piège" sur l'IP en https avec un certificat auto-signé

Sur le port 80, j'avais mis en place le Vhost 000-default avec Require all denied afin de me débarrasser du bruit de fond du net vers le fichier de log principal d'Apache, et accessoirement éviter les liens entre mon IP et les sites que j'héberge (rien de bien méchant, c'est pour le principe, même si on peut retrouver les domaines à partir de l'IP avec le whois).

Sur ma nouvelle conf, tout est bien redirigé et à présent en HSTS, au top ! Cependant j'ai découvert la nécessité de fournir un certificat pour le handshake avant que le visiteur soit orienté vers le bon Vhost sous peine d'échec de connexion sur tous les sites, c'est très nouveau pour moi.
Ce qu'il se passe actuellement sur le 443 : j'ai site1.tld et site2.tld, avec chacun son certificat/logs séparés. Lors d'un accès sur l'IP avec https, le Vhost de site1.tld est utilisé (avec un avertissement "SSL_ERROR_BAD_CERT_DOMAIN" bien entendu).

Ce qui me dérange :
On voit le contenu de site1.com en forçant une exception de sécurité dans le navigateur (ou si le client l'ignore d'office). Pour éviter ce souci, j'ai ajouté "SSLStrictSNIVHostCheck On" dans mon ssl.conf (je bloque les requêtes avec un mauvais/sans Server Name Indication).

Mais on voit toujours que le certificat appartient à site1.com, et je préfèrerais avoir un log séparé des accès directs sur l'IP sur le 443.

Ma question est donc, comment reproduire ce qui est fait sur l'IP du serveur lafibre.info (cf image jointe), à savoir un Vhost piège en https avec un certificat auto-signé, qui si possible ne révèle pas mes noms de domaines mais permet que les handshakes avec SNI aboutissent au bon Vhost/certificat associé.

Bon, j'espère que c'est pas trop demander et que c'est intelligible. Par contre si c'est trop compliqué pour moi, je tenterai de comprendre vos réponses :P Merci de m'avoir lu !

Ajout extrait conf vhost site1.tld :<VirtualHost *:80>
ServerAdmin site1@gmail.com
        ServerName site1.tld
        ServerAlias www.site1.tld
Redirect permanent / https://site1.tld/
LogLevel warn
        CustomLog /home/site1/logs/redirect80.log combined
        ServerSignature Off
</virtualHost>
<VirtualHost *:443>
        ServerAdmin site1@gmail.com
        ServerName site1.tld
        ServerAlias www.site1.tld
        DocumentRoot /home/site1/public_html/
<Directory /home/site1/public_html/>
Options -Indexes +FollowSymLinks +MultiViews
Require all granted
#Oui c'est crade j'utilise un htaccess pour la redirection www vers non-www entre autres choses
AllowOverride All
</Directory>
SSLEngine on
        SSLCertificateFile /etc/letsencrypt/live/site1.tld/cert.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/site1.tld/privkey.pem
        SSLCertificateChainFile /etc/letsencrypt/live/site1.tld/chain.pem
        SSLProtocol all -SSLv2 -SSLv3
        SSLHonorCipherOrder on
        SSLCompression off
        SSLOptions +StrictRequire
        SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
        Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains"
LogLevel warn
        ErrorLog /home/site1/logs/error.log
        CustomLog /home/site1/logs/access.log combined
        ServerSignature Off
</VirtualHost>