Apache SSL VirtualHosts sur une seule IP à l'aide d'un certificat UCC / SAN

11

J'ai besoin d'héberger plusieurs hôtes virtuels Apache avec SSL à partir d'une seule IP.

Maintenant - je comprends que parce que SSL enveloppe la demande HTTP, il n'y a aucun moyen de savoir quel hôte est demandé jusqu'à ce qu'une clé publique ait été envoyée au client en premier. Cela rompt essentiellement la possibilité que les hôtes virtuels SSL utilisent un certificat SSL standard.

J'ai obtenu un certificat de communications unifiées (UCC), également appelé certificat SAN (Subject Alternative Name). Cela me permet de servir le même certificat pour plusieurs domaines.

Je voudrais que ce soit le certificat servi par Apache pour toute demande SSL - puis que Apache résolve l'hôte virtuel comme d'habitude, une fois le cryptage établi.

Comment dois-je configurer Apache pour cela? J'ai essayé de rechercher comment cela peut être fait, mais tout ce que je peux trouver sont des citations qui disent que c'est possible, mais sans détails:


wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI

Bien qu'Apache puisse renégocier la connexion SSL plus tard après avoir vu le nom d'hôte dans la demande (et le fait), il est trop tard pour choisir le bon certificat de serveur à utiliser pour correspondre au nom d'hôte de la demande lors de la négociation initiale, ce qui entraîne des avertissements / erreurs du navigateur sur les certificats ayant le mauvais nom d'hôte en eux.

serverfault.com/questions/48334/apache-virtual-hosts-with-ssl

Soit dit en passant, il est possible d'avoir plusieurs hôtes virtuels nommés sécurisés SSL sur une seule adresse IP - je le fais sur mon site Web - mais cela génère toutes sortes d'avertissements dans les journaux Apache et d'avertissements de certificat dans le navigateur. Je ne le recommanderais certainement pas pour un site de production qui doit avoir l'air propre. -David 31 juil à 4:58

www.digicert.com/subject-alternative-name.htm

Hôte virtuel Plusieurs sites SSL sur une seule adresse IP. L'hébergement de plusieurs sites compatibles SSL sur un seul serveur nécessite généralement une adresse IP unique par site, mais un certificat avec des noms alternatifs de sujet peut résoudre ce problème. Microsoft IIS 6 et Apache sont tous deux capables d'héberger des sites HTTPS virtuels à l'aide de SSL de communications unifiées, également appelés certificats SAN.


Veuillez aider.

Mikuso
la source

Réponses:

13

J'ai testé cela sur mon instance Apache 2.2.14 et cela a bien fonctionné:

Utilisez la directive NameVirtualHost (vers ports.conf):

NameVirtualHost *:443

définissez vos vhosts:

<VirtualHost *:443>
  ServerName www.siteA.com
  DocumentRoot "/opt/apache22/htdocs/siteA"
  SSLCertificateFile "/path/to/my/cert"
  SSLCertificateKeyFile "/path/to/my/key"
</VirtualHost>
<VirtualHost *:443>
  ServerName www.siteB.com
  DocumentRoot "/opt/apache22/htdocs/siteB"
  SSLCertificateFile "/path/to/my/cert"
  SSLCertificateKeyFile "/path/to/my/key"
</VirtualHost>

J'ai utilisé ce lien comme ressource.

micah
la source
1
La réponse est correcte. Une chose qui m'a fait trébucher pendant un temps LOOOONNNNNNGGGGG était que j'avais une faute de frappe où j'avais <Virtual *:433>... le bon port est 443! Pouah, des heures de ma vie perdues sur celui-ci ... J'espère que ma douleur n'a pas été vaine et cela aide quelqu'un ...
Nick P.