Hello, je souhaiterais avoir votre avis sur un truc.
J’héberge plusieurs domaines, j’utilise nginx et je souhaite me simplifier la vie autant que possible tout en ayant un niveau de sécurité raisonnable.
J’ai donc, pour chaque domaine, pondu un petit script que je joue pour chaque domaine, ici pour le domaine1 :
#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
certbot certonly \
--non-interactive \
--rsa-key-size 4096 \
--preferred-challenges http \
--nginx \
--agree-tos \
--email webadmin@domaine1.net \
--renew-by-default \
--cert-name cert_global_domaine1.com \
--webroot-path /usr/share/nginx/html/www.domaine1.com -d domaine1.com -d www.domaine1.com
# --dry-run
ça marche bien, j’ai un certificat solide et tout va bien.
Je joue le même script, mais avec mon domaine2, je remplace donc 2 ou 3 bricoles dedans, je rajoute un sous domaine et zou. Idem, ça marche très bien.
Par contre, tout ce petit monde est sur un serveur dont les hôtes nginx écoute toutes sur la même adresse. Je me retrouve donc avec des alertes SNI lorsque je veux passer ça sur ssllabs. En soit, ça n’est pas impactant pour les navigateurs récents, mais c’est quand même chiant pour ceux qui naviguent avec une relique (je n’ai pas envie qu’ils descendent les 2 certificats alors qu’il n’y a besoin que d’un seul).
J’ai donc plusieurs solutions :
-
mettre une IP virtuelle pour chaque hôte NGINX ==> je ne peux pas, j’ai déjà une ip pour chaque MX de chaque domaine, ça va être un foutoir monstre à gérer après, car je vais devoir encore rajouter des IPs si je veux être propre jusqu’au bout…
-
ne pas faire un certificat par domaine, mais mettre tout le monde dans le même certificat, et là, finit les problèmes de SNI en théorie…
ça reviendrait donc à faire ceci :
#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
certbot certonly \
--non-interactive \
--rsa-key-size 4096 \
--preferred-challenges http \
--nginx \
--agree-tos \
--email webadmin@domaine1.net \
--renew-by-default \
--cert-name cert_global \
--webroot-path /usr/share/nginx/html/www.domaine1.com -d domaine1.com -d www.domaine1.com
--webroot-path /usr/share/nginx/html/www.domaine2.com -d domaine2.com -d www.domaine2.com
--webroot-path /usr/share/nginx/html/www.domaine3.com -d domaine3.com -d www.domaine3.com
# --dry-run
Et du coup de n’appeler que cert_global dans chaque conf Nginx.
Mais je me dis, c’est trop beau pour être vrai, ça ne peut pas marcher et visiblement personne ne fait ça.
Ma question est donc la suivante : est-ce qu’en prod une solution comme ça fonctionnerait ? Quels sont les éventuels problèmes ? En dehors que c’est moins propre que d’avoir un cert par domaine principal.
En ce qui me concerne je trouve ça quand même vachement plus simple à gérer et on évite les problèmes de SNI, mais il doit y avoir un loup quelque-part.