Apache SSL VirtualHosts auf einer einzelnen IP mit UCC / SAN-Zertifikat

11

Ich muss mehrere virtuelle Apache-Hosts mit SSL von einer einzigen IP aus hosten.

Nun - ich verstehe, dass es keine Möglichkeit gibt zu wissen, welcher Host angefordert wird, da SSL die HTTP-Anforderung umschließt, bis zuerst ein öffentlicher Schlüssel an den Client gesendet wurde. Dies unterbricht im Wesentlichen die Möglichkeit, dass virtuelle SSL-Hosts ein Standard-SSL-Zertifikat verwenden.

Ich habe ein Unified Communications Certificate (UCC) erhalten, das auch als SAN-Zertifikat (Subject Alternative Name) bezeichnet wird. Dadurch kann ich dasselbe Zertifikat für mehrere Domänen bereitstellen.

Ich möchte, dass dies das von Apache für jede SSL-Anforderung bereitgestellte Zertifikat ist - und dass Apache den virtuellen Host wie gewohnt auflöst, sobald die Verschlüsselung eingerichtet wurde.

Wie soll ich Apache dafür konfigurieren? Ich habe versucht zu untersuchen, wie dies getan werden kann, aber alles, was ich finden kann, sind Zitate, die besagen, dass es möglich ist, aber keine Einzelheiten:


wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI

Während Apache die SSL-Verbindung später neu aushandeln kann, nachdem der Hostname in der Anforderung angezeigt wurde (und dies auch tut), ist es zu spät, das richtige Serverzertifikat auszuwählen, das zum Anpassen des Anforderungshostnamens während des ersten Handshakes verwendet werden soll, was zu Browserwarnungen / -fehlern bei Zertifikaten führt der falsche Hostname in ihnen.

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

Übrigens ist es möglich, mehrere SSL-gesicherte benannte virtuelle Hosts unter einer einzigen IP-Adresse zu haben - ich mache das auf meiner Website -, aber es werden alle möglichen Warnungen in den Apache-Protokollen und Zertifikatswarnungen im Browser ausgegeben. Ich würde es auf keinen Fall für eine Produktionsstätte empfehlen, die sauber aussehen muss. -David 31. Juli um 4:58

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

Virtueller Host Mehrere SSL-Sites auf einer einzigen IP-Adresse. Das Hosten mehrerer SSL-fähiger Sites auf einem einzelnen Server erfordert normalerweise eine eindeutige IP-Adresse pro Site. Ein Zertifikat mit alternativen Betreffnamen kann dieses Problem jedoch lösen. Microsoft IIS 6 und Apache können HTTPS-Sites für virtuelle Hosts mithilfe von Unified Communications SSL, auch als SAN-Zertifikate bezeichnet, ausführen.


Bitte helfen Sie.

Mikuso
quelle

Antworten:

13

Ich habe dies auf meiner Apache 2.2.14-Instanz getestet und es hat gut funktioniert:

Verwenden Sie die Direktive NameVirtualHost (zu ports.conf):

NameVirtualHost *:443

Definieren Sie Ihre 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>

Ich habe diesen Link als Ressource verwendet.

Micah
quelle
1
Die Antwort ist richtig. Eine Sache, die mich für eine LOOOONNNNNNGGGGG-Zeit stolperte, war, dass ich einen Tippfehler hatte, wo ich hatte <Virtual *:433>... der richtige Port ist 443! Ugh, Stunden meines Lebens verloren in diesem Fall ... Ich hoffe, mein Schmerz war nicht umsonst und das hilft jemandem ...
Nick P.