2008-11-09 8 views
8

J'ai un serveur web, qui sert différents noms de domaine, mais qui n'a qu'une seule adresse IP assignée. Cela fonctionne bien avec les hôtes virtuels dans Apache. Maintenant, je veux des connexions cryptées SSL pour les sites Web. Comment puis-je définir différents certificats SSL pour les différents vhosts?Comment puis-je configurer différents certificats SSL pour les hôtes virtuels sur Apache?

L'utilisation de différentes adresses IP pour les différents noms d'hôtes serait une solution - pas très élégante mais possible. Mais je veux savoir, comment je peux utiliser différents certificats SSL pour différents vhosts. Je cherche donc une solution avec une seule adresse IP.

Répondre

8

MISE À JOUR: 2013

Il semble que la SNI commence enfin Saisis que les anciens navigateurs tombent loin. Voici le docs for Apache SNI et voici un wikipedia article on SNI qui inclut un graphique sur les navigateurs qui le supportent. En bref, tous les principaux navigateurs le supportent dans les versions supportées; Si le support de navigateurs plus anciens est important, vous devrez peut-être en tenir compte.

------ ------------ réponse précédente

hôtes SSL doivent être liées à une adresse IP unique/combinaison de port, donc vous ne pouvez pas utiliser l'hébergement virtuel (Ou au moins, il ne peut avoir qu'un seul hôte SSL par adresse IP). Cela est dû au fait que https commence le chiffrement avant que le paramètre Host: soit envoyé dans http, et ne puisse donc pas déterminer quel chiffrement utiliser à partir du nom d'hôte - tout ce qu'il possède est l'adresse IP.

Ce serait stupide facile à corriger si HTTP avait une commande TLS afin qu'il puisse démarrer SSL après avoir demandé le nom d'hôte, mais personne ne m'a demandé.

Pour la réponse définitive, voir http://httpd.apache.org/docs/2.0/ssl/ssl_faq.html#vhosts2

+2

En fait, il existe maintenant RFC 2817, ce qui permet de mettre à niveau TLS dans une connexion HTTP. Il est implémenté dans Apache. –

+0

Mais les navigateurs le supportent-ils encore? – DGM

2

autant que je sache, il est impossible de mettre en place différents certificats SSL pour les hôtes virtuels basés sur le nom à l'aide mod_ssl. Vous pouvez lire la raison détaillée here. Une alternative serait d'utiliser des hôtes virtuels basés sur IP (ce qui n'est probablement pas possible/pas une solution très satisfaisante) - il suffit d'insérer différentes directives SSLCertificateFile, ou vous pouvez essayer la méthode this en utilisant mod_gnutls.

+0

Wow, que RFC pour SNI a été lancé en 2003 et pourtant il n'a toujours pas compris? Je suis intrigué par l'affirmation selon laquelle les navigateurs le supportent déjà. – DGM

4

Après des allusions dans les réponses données et des commentaires à ce sujet (en particulier par Martin v. Löwis), j'ai fait un peu de googling et trouvé this website about RFC 2817 and RFC 3546. La RFC 3546 semble être une bonne solution.

1

Vous aurez besoin d'une combinaison IP: port distincte pour chaque vhost.

La RFC 3546 n'est pas encore réalisable. IE ne le supporte que sous Vista, et dernièrement j'ai vérifié que Safari ne le gère pas non plus.

+0

Oui, les navigateurs supportant cette fonctionnalité sont restreints, mais c'est une solution possible. Dommage, qu'aucune solution "correcte" n'existe. RFC 3546 semble le meilleur espoir pour une bonne solution. Pour le moment, vous devez commander plus d'adresses IP ou restreindre les navigateurs. – Mnementh

+0

Oui, ou la solution temporaire laide de l'exécution sur un port différent. RFC3546 va arriver, mais ce jour est encore malheureusement un long chemin. – bobince

1

Bien que tout DGM mentionné soit vrai, il y a eu quelques tentatives pour contourner l'exigence d'une adresse IP unique pour chaque certificat, y compris mod_gnutls et en utilisant TLS extensions. Il y a quelques inconvénients mais ils peuvent être acceptables pour vous.

1

Enfin, c'est possible! Vous avez besoin à la fois serveur et client pour supporter Nom du serveur Indication (SNI)

navigateurs, qui prennent en charge: SNI

  • Mozilla Firefox 2.0 ou version ultérieure
  • Opera 8.0 ou version ultérieure (avec TLS 1.1 activé)
  • Internet Explorer 7.0 ou version ultérieure (sur Vista, XP non)
  • Google Chrome
  • Safari 3.2.1 sur Mac OS X 10.5.6

Ce document montre houe pour configurer votre serveur: SSL with Virtual Hosts Using SNI