PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Apache2: IP-based und name-based vhosts gemischt betreiben (SSL&IPv6)



SirSydom
01.05.07, 15:04
Hallo!

Also ich habe einen Server und dazu eine öffentliche IP-Adresse.
Auf diesem Server werden über Apache einige Webseiten gehostet.
Nun funktioniert ja da SSL nur eingeschränkt mit Name-Based-vhosts, weil alle vhosts sich ein Zertifikat teilen.

Warum das so ist, wegen Sockets und so, is klar.

Zur partiellen Lösung, zumindest für Leute mit IPv6 Connectivity, habe ich mir ein IPv6 Subnetz besorgt.

Ein wenig zur Konfiguration:


Listen 84.38.64.166:80
Listen 84.38.64.166:443
Listen 172.16.34.1:80
Listen 172.16.34.1:443
Listen [2001:6f8:1080::1:2]:80
Listen [2001:6f8:1080::1:2]:443


"default" vhosts:



NameVirtualHost 84.38.64.166:80
NameVirtualHost 84.38.64.166:443
<VirtualHost 84.38.64.166:80>
ServerName www.comefrom.de
ServerAdmin webmaster@comefrom.de

[...]

</VirtualHost>

<VirtualHost 84.38.64.166:443>
ServerName www.comefrom.de
ServerAdmin webmaster@comefrom.de

SSLEngine On
SSLCertificateFile /etc/ssl/certs/www.comefrom.de-cacert-ds.crt
SSLCertificateKeyFile /etc/ssl/private/www.comefrom.de-cacert-ds.key

DocumentRoot /var/www

[...]

</VirtualHost>


Und noch ein paar mehr vhosts auf der 84.38.64.166 (nach dem gleichen Schema).

So, dann hab ich einen vhost, der auch per IPv4 erreichbar ist, zusätzlich IPv6 eingerichtet (DNS funktioniert):


<VirtualHost 84.38.64.166:80>
ServerName www.spies-it.de
ServerAdmin webmaster@spies-it.de

[...]
</VirtualHost>

<VirtualHost 84.38.64.166:443>
ServerName www.spies-it.de
ServerAdmin webmaster@spies-it.de

SSLEngine On
SSLCertificateFile /etc/ssl/certs/www.comefrom.de-cacert-ds.crt
SSLCertificateKeyFile /etc/ssl/private/www.comefrom.de-cacert-ds.key

[...]
</VirtualHost>

<VirtualHost [2001:6f8:1080::1:2]:80>
ServerAdmin webmaster@spies-it.de

[...]
</VirtualHost>

<VirtualHost [2001:6f8:1080::1:2]:443>
ServerAdmin webmaster@spies-it.de

SSLEngine On
SSLCertificateFile /etc/ssl/certs/www.spies-it.de-cacert-ds.crt
SSLCertificateKeyFile /etc/ssl/private/www.spies-it.de-cacert-ds.key

[...]
</VirtualHost>

So, aber trotzdem wird auch bei Verbidnung über IPv6 das falsche Zertifikat ausgegeben: www.comefrom.de. Was mache ich falsch?

Thorashh
02.05.07, 13:26
Für https ist keine namensbasierte Zuordnung möglich.
So aus dem Bauch heraus würde ich sagen, es müsste reichen, wenn du die Anweisung "NameVirtualHost 84.38.64.166:443" wegläßt.

Roger Wilco
02.05.07, 18:13
Wurde der Prozess an alle notwendigen IP-Adressen gebunden? Gegebenenfalls mit netstat oder lsof überprüfen.

Hat die Domain jeweils den richtigen A und AAAA Resource Record?

Und wie Thorashh schon geschrieben hat: Die NameVirtualHostDirektive brauchst du nur für die unverschlüsselten Webseiten, da namensbasiertes VirtualHosting bei SSL/HTTPS nicht möglich ist (bitte kommt jetzt nicht mit RFC 2817 u. ä.).

SirSydom
02.05.07, 20:41
Wurde der Prozess an alle notwendigen IP-Adressen gebunden? Gegebenenfalls mit netstat oder lsof überprüfen.



root@comefrom:~# netstat -taupen | grep apache2
tcp 0 0 84.38.64.166:80 0.0.0.0:* LISTEN 0 26185 5843/apache2
tcp 0 0 172.16.34.1:80 0.0.0.0:* LISTEN 0 26187 5843/apache2
tcp 0 0 84.38.64.166:443 0.0.0.0:* LISTEN 0 26186 5843/apache2
tcp 0 0 172.16.34.1:443 0.0.0.0:* LISTEN 0 26188 5843/apache2
tcp6 0 0 2001:6f8:1080::1:2:80 :::* LISTEN 0 26189 5843/apache2
tcp6 0 0 2001:6f8:1080::1:2:443 :::* LISTEN 0 26190 5843/apache2



Hat die Domain jeweils den richtigen A und AAAA Resource Record?




;; ANSWER SECTION:
www.spies-it.de. 86333 IN A 84.38.64.166

;; ANSWER SECTION:
www.spies-it.de. 86313 IN AAAA 2001:6f8:1080::1:2





Und wie Thorashh schon geschrieben hat: Die NameVirtualHostDirektive brauchst du nur für die unverschlüsselten Webseiten, da namensbasiertes VirtualHosting bei SSL/HTTPS nicht möglich ist (bitte kommt jetzt nicht mit RFC 2817 u. ä.).

Nein, ich komm mit keinem RFC, aber: Der Apache mag das nicht können das er andere SSL-Zertifikate benutzt, jedoch werden alle anderen Optionen korrekt aus dem vhost Container übernommen.
So kann ich für a.domain.tld und b.domain.tld unter HTTPS trotzdem unterschiedliche Seiten betreiben. Es kommt halt dann ein "ungültiges" SSL-Zertifikat.

Siehe:
https://www.spies-it.de/
https://www.sirsydom.de/

Testweise habe ich *trotzdem* mal die NameVirtualHost Directive und alle NameBased SSL VHosts rausgenommen: Ohne Erfolg.