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 19/04/2016, à 11:31

ffkk

Configuration SSL sur serveur dédié

Bonjour à tous,

Étant développeur, je viens demander conseil concernant une configuration serveur qui me pose quelques problèmes.

Je dispose d'un serveur dédié (une IP) sur lequel j'ai 2 sites (domaine1.com et domaine2.com).
J'ai récemment installé un certificat SSL pour sécuriser domaine1.com :
- l'accès à https://www.domaine1.com est fonctionnel
- les redirections 301 de http://www.domaine1.com vers https://www.domaine1.com sont fonctionnelles
- l'accès à http://www.domaine2.com est fonctionnel.

On en vient à mon problème :
- l'accès à https://www.domaine2.com génère une alerte du certificat (ce qui est normal puisque domaine2.com n'est pas concerné par le certificat SSL)
- si je choisis d'accepter l'exception, c'est le contenu de domaine1.com qui s'affiche (mais sans redirection)

Le comportement que je souhaite mettre en place : forcer la redirection vers http://www.domaine2.com lorsque je tape https://www.domaine2.com.
Sans rentrer pour le moment dans le détail des fichiers de configuration, quelqu'un est-il en mesure de me dire si ce que je souhaite faire est possible dans ma configuration actuelle (un serveur, une ip) ?

Merci à vous,

Dernière modification par ffkk (Le 19/04/2016, à 11:57)

Hors ligne

#2 Le 19/04/2016, à 12:08

bruno

Re : Configuration SSL sur serveur dédié

Je t'invite à lire cette doc pour comprendre ce qui  se passe: https://wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI

Le point essentiel est qu'Apache ne peut examiner le nom d'hôte et donc utiliser la configuration de l'hôte virtuel adéquat qu'une fois que la connexion TLS  est établie (SSL est obsolète et ne devrait plus être employé dans le jargon). C'est donc le premier hôte virtuel qui est utilisé avec son certificat.

Autrement dit, tel quel tu ne peux pas avoir plusieurs domaines avec des certificats différents avec un seule IP et la redirection ne résoudra pas le problème.
Tu peux utiliser SNI comme indiqué dans le lien précédent, mais cela ne fonctionnera pas avec tous les clients…

Dernière modification par bruno (Le 19/04/2016, à 12:09)

Hors ligne

#3 Le 19/04/2016, à 12:29

donut

Re : Configuration SSL sur serveur dédié

Salut,
Effectivement si ta configuration est correcte, voir l'explication de bruno.
Néanmoins cela ne pose des problèmes qu'avec des clients très vieux (d'après SSLLabs, XP+IE8) et/ou des vieilles versions de Apache.
Si tu veux une compatibilité maximale (pour un business par exemple) alors il faut 1 IP / site https.
Sinon utilise des versions récentes avec SNI.

Dernière modification par donut (Le 19/04/2016, à 12:30)


https://utux.fr (blog perso)

Hors ligne

#4 Le 19/04/2016, à 12:39

ffkk

Re : Configuration SSL sur serveur dédié

Merci de votre retour.
J'essaie de tout résumer.

Si j'ai bien compris :
- j'écoute le port :443 sur tout mon serveur/ip (pour tous les domaines, sans possibilité de limiter à domaine1.com)
- en cas de requête HTTPS, le premier virtualhost trouvé (domaine1.com) répond et s'affiche (y compris pour domaine2.com)

Par défaut, je n'ai pas possibilité :
- de rediriger https://www.domaine2.com vers http://www.domaine2.com avant l'alerte certificat (le TLS Handshake se faisant avant la requête http)
- d'utiliser une règle virtualhost spécifique à https://www.domaine2.com (le nom d'hôte n'est pas transmis avec la connexion TLS)
- de limiter l'écoute du port :443 à domaine1.com (c'est tout le serveur/ip qui est écouté)

Pour palier ce problème, je peux :
- mettre en place SNI (pour envoyer le nom d'hôte dans le handshake TLS et utiliser la configuration du virtualhost adéquate mais avec des problèmes de compatibilité sur certains clients)
- acheter une IP pour domaine2.com (dans le but de limiter l'écoute de :443 pour l'IP de domaine1.com)

J'ai aussi la possibilité plus simple (mais moins élégante) de rediriger https://www.domaine2.com vers http://www.domaine2.com après l'alerte du certificat et la mise en exception en modifiant le fichier de config de domaine1.com (puisque c'est le domaine qui répond aux requêtes https).

Ce que je dis parait-il correct ?

Hors ligne

#5 Le 19/04/2016, à 13:44

bruno

Re : Configuration SSL sur serveur dédié

Cela me semble correct wink
Sauf pour ta dernière possibilité. Ta redirection ne fonctionnera pas car lorsque le client fera une requête vers https://www.domaine2.com la connexion sera établie avec le certificat de domaine1.com ce qui générera une erreur du navigateur avant tout autre traitement.

Hors ligne

#6 Le 19/04/2016, à 15:28

ffkk

Re : Configuration SSL sur serveur dédié

Merci pour ton retour.
Je pense avoir une vue d'ensemble des différentes possibilités et limitations.

Pour la dernière possibilité que j'ai évoquée, je parlais bien d'une redirection de https://www.domaine2.com vers http://www.domaine2.com APRES l'erreur de navigateur causée par le certificat valide uniquement pour https://www.domaine1.com.

C'est une solution un peu moche il est vrai, mais qui permet d'éviter d'afficher le contenu du site https://www.domaine1.com lorsque j'accède à https://www.domaine2.com (mais on n'évite pas l'erreur de certificat dans le navigateur, on est d'accord).

Je vais réfléchir à la configuration avec SNI ou une seconde IP pour plus tard.

Hors ligne

#7 Le 19/04/2016, à 15:42

bobe

Re : Configuration SSL sur serveur dédié

Il se passe quoi s'il met SSLEngine off dans le virtualhost *:443 de www.domaine2.com ? (probablement, le navigateur chouine, mais j'ai pas testé)

Sinon, il n'y a plus qu'à inclure www.domaine2.com dans le certificat. Ou bien tu lui dédis son propre certificat (un let's encrypt par exemple).

Hors ligne

#8 Le 19/04/2016, à 15:59

ffkk

Re : Configuration SSL sur serveur dédié

Merci pour ta contribution.

J'utilise actuellement un certificat EV sans SAN, je n'ai donc pas la possibilité d'inclure de nouveau domaine.
A noter que l'utilisation des SAN est plus cher, et entraîne le problème de compatibilité avec IE sous XP (comme vu plus haut).

Let's encrypt est une super initiative que j'utilise d'ailleurs sur d'autres projets.
Mais dans mon cas, cela ne résout pas mon problème (ou alors on retombe sur l'option acquérir une adresse IP supplémentaire pour le second certificat).

Concernant ta suggestion (SSLEngine off dans le virtuahost *:443 de www.domaine2.com), je n'ai pas testé.
Mais selon toute logique, elle ne sera jamais lue (c'est la première règle virtualhost *:443 qui sera traitée, à savoir celle de www.domaine1.com

Hors ligne

#9 Le 19/04/2016, à 16:12

bobe

Re : Configuration SSL sur serveur dédié

Le problème de compatibilité avec IE+XP est vraiment bloquant ? Si oui, il ne reste que la solution d'une deuxième IP (et donc un deuxième certificat, pour www.domaine2.com) comme l'a dit donut.

Hors ligne

#10 Le 19/04/2016, à 16:31

ffkk

Re : Configuration SSL sur serveur dédié

Je planifie un support dégradé de IE8 + XP pour encore un an donc je ne peux pas utiliser SAN/SNI dans l'immédiat.
Mais à long terme, je pense que ce sera sûrement la meilleure option.

L'option de la deuxième IP est aussi intéressante et ne nécessite pas forcément un second certificat.

Je vais continuer de creuser tout ça.
Merci à tous smile

Hors ligne

#11 Le 19/04/2016, à 16:44

bruno

Re : Configuration SSL sur serveur dédié

bobe a écrit :

Il se passe quoi s'il met SSLEngine off dans le virtualhost *:443 de www.domaine2.com ? (probablement, le navigateur chouine, mais j'ai pas testé)

Il ne se passe rien. Comme expliqué en #2.

En détail :

1. le client envoie une requête vers https://domaine2.com ;
2. la résolution de domaine2.com en IP w.x.y.z est faite ;
3. le serveur correspondant à w.x.y.z reçoit la requête TLS (sans SNI)
4. le serveur initie la connexion TLS (handshake) avant de recevoir les en-têtes HTTP , avec donc le certificat du premier hôte virtuel par défaut.

En conséquence tu peux mettre toutes les directives, redirection ou règles de réécriture que tu veux dans tes fichiers de configuration, cela ne servira à rien.

Les seules solutions ont déjà été évoquées :
- hôtes virtuels basés sur l'IP, donc une IP par hôte ;
- utilisation du SNI qui permet d’envoyer le nom d'hôte en même temps que la requête TLS ;

D'autres solutions :
- utiliser des ports différents pour différents sites en HTTPS mais cela ne résoudra pas le problème spécifique de ffkk ;
- utilisation du module gnuTLS d'Apache à la place du module SSL standard (faire une recherche, je ne sais pas comment faire exactement) ;

Hors ligne

#12 Le 19/04/2016, à 17:07

ffkk

Re : Configuration SSL sur serveur dédié

J'ai lu cette possibilité additionnelle d'utiliser des ports différents selon le domaine.
Mais je ne l'ai pas abordé car elle ouvre de nouvelles problématiques (blocage par firewall par exemple) et ne correspond pas vraiment à mon scénario.

Je ne connaissais pas ce module gnuTLS, ça a l'air intéressant.
Ceci étant, mon hébergeur n'étant pas trop au point sur certaines de mes demandes (HTTP/2, PHP-FPM), je doute qu'il m'assiste beaucoup.

L'option que j'ai retenue (quick'n'dirty fix) pour le moment est de rediriger https://www.domaine2.com vers http://www.domaine2.com APRES l'erreur de certificat (c'est moche mais bon....)
Et je vais ensuite réfléchir à une solution plus adaptée.

Hors ligne