PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Apache 2.0.52 + SSL + vhosts = Domain Name Mismatch



heinero
31.12.04, 18:59
Hallo,

ich habe folgendes Problem. Ich habe mehrere Virtual Hosts auf nem Server laufen. Allen kein Problem, außer ich will verschiedene VHosts über SSL laufen lassen.
In diesem Fall verwendet er für jeden Vhosts das Certifikat das bei dem in der httpd.conf als erstes stehenden Vhosts angegeben wurde, wodurch natürlich im CN der die falche Adresse steht, was zu einem Domain Name Mismatch im Browser führt.

Kennt jemand das Problem?

Gruß,

Heiner

Stormbringer
31.12.04, 19:16
Hi,

da Du doch mit Includes arbeiten kannst, sollte es sich doch eigentlich vermeiden lassen .. (Ungetestet!!).
Als Beispiel:
httpd.conf beinhaltet Include /etc/apache2/vhosts/master.conf
/etc/apache2/vhosts/master.conf beinhaltet:
Include /etc/apache2/vhosts/domain1.conf
Include /etc/apache2/vhosts/domain2.conf
Include /etc/apache2/vhosts/domain3.conf
...
Include /etc/apache2/vhosts/ssl1.conf
Include /etc/apache2/vhosts/ssl2.conf
Include /etc/apache2/vhosts/ssl3.conf

Und /etc/apache2/vhosts/ssl1.conf schlußendlich beinhaltet bspw.:


<IfDefine SSL>
<IfDefine !NOSSL>
<VirtualHost *:443>
DocumentRoot "/srv/www/vhosts/www.domain1.de"
ServerName www.domain1.de
ServerAdmin webmaster@domain1.de
ErrorLog /var/log/apache2/domain1-error_log
TransferLog /var/log/apache2/domain1-access_log
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSL v2:+EXP:+eNULL
SSLCertificateFile /etc/apache2/ssl.crt/server.crt
SSLCertificateKeyFile /etc/apache2/ssl.key/server.key
...

Da auch bei den Zertifikaten Pfade angegeben werden, kannst Du es doch eigentlich recht einfach separieren, oder nicht?

Gruß

heinero
31.12.04, 19:34
Moin,
das mit den Includes würde meines Erachtens keinen Unterschied machen.
Zur Zeit sieht der vHost Teil der Config so aus:




NameVirtualHost 10.10.10.2:80
NameVirtualHost 10.10.10.2:443

<VirtualHost 10.10.10.2:80>
ServerName www.domain1.net
ServerAlias domain1.net
Redirect / https://www.domain1.net/
</VirtualHost>

<VirtualHost 10.10.10.2:443>
ServerName www.domain1.net
ServerRoot /var/www/vhosts/www.domain1.net/

DocumentRoot /var/www/vhosts/www.domain1.net/html/
ErrorLog /var/www/vhosts/www.domain1.net/logs/error_log
CustomLog /var/www/vhosts/www.domain1.net/logs/access_log common
Alias "/webmail" "/var/www/vhosts/www.domain1.net/php/squirrelmail/current"

SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSL v2:+EXP:+eNULL
SSLCertificateFile /var/www/vhosts/www.domain1.net/ssl/www.domain1.net.pem
SSLCertificateKeyFile /var/www/vhosts/www.domain1.net/ssl/www.domain1.net.key
<Files ~ "\.inc*">
Order allow,deny
Deny from all
</Files>
</VirtualHost>

<VirtualHost 10.10.10.2:80>
ServerName groupware.domain2.net
Redirect / https://groupware.domain2.net
</VirtualHost>

<VirtualHost 10.10.10.2:443>
ServerName groupware.domain2.net
ServerRoot /var/www/vhosts/groupware.domain2.net/

DocumentRoot /var/www/vhosts/groupware.domain2.net/html/
ErrorLog /var/www/vhosts/groupware.domain2.net/logs/error_log
CustomLog /var/www/vhosts/groupwaredomain2.net/logs/access_log common

Alias / /var/www/vhosts/groupware.domain2.net/php/groupware/current/

SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSL v2:+EXP:+eNULL
SSLCertificateFile /var/www/vhosts/groupware.domain2.net/ssl/groupware.domain2.net.pem
SSLCertificateKeyFile /var/www/vhosts/groupware.domain2.net/ssl/groupware.domain2.net.key

<Files ~ "\.inc*">
Order allow,deny
Deny from all
</Files>

# This bit is not needed here if you have changed your php.ini
# as recommened in php-configuration.txt
php_flag display_errors off
php_flag file_uploads on
php_flag log_errors on
php_flag register_globals off
php_value max_execution_time 90
php_value memory_limit 20M
php_value upload_max_filesize 5M
</VirtualHost>


Das Problem ist das er beim vhost groupware.domain2.net nicht das dort verwendete Zertifikat, sondern das bei www.domain1.net angegebende verwendet.
Das Problem ist reproduzierbar, ich habe es mit weiteren vHosts getestet.

Gruß,

Heiner

Terran Marine
01.01.05, 09:46
Morgen,

Apache benötigt pro SSL Zertifikat eine eigene IP-Adresse,
namensbasierte virtuelle Hosts sind mit SSL nicht möglich.

Siehe auch :

http://httpd.apache.org/docs/vhosts/name-based.html

Gruß
Terran

Stormbringer
01.01.05, 11:20
Morgen,

Apache benötigt pro SSL Zertifikat eine eigene IP-Adresse,
namensbasierte virtuelle Hosts sind mit SSL nicht möglich.

Siehe auch :

http://httpd.apache.org/docs/vhosts/name-based.html

Gruß
Terran

Das ist so nicht ganz richtig.
Apache kann eine SSL Seite (bzw. domain) als vhost ohne Angabe einer IP-Adresse anbieten (habe soetwas selbst unter 8.2 für mein Webmail implementiert).
Weiterhin gibt Du Doku für apache an, obwohl heinero explizit angibt, apache2 zu nutzen.
Der Link sollte also eher auf http://httpd.apache.org/docs-2.1/vhosts/ zeigen ... ;-)

Gruß

Terran Marine
01.01.05, 14:36
Das ist so nicht ganz richtig.
Apache kann eine SSL Seite (bzw. domain) als vhost ohne Angabe einer IP-Adresse anbieten (habe soetwas selbst unter 8.2 für mein Webmail implementiert).
Weiterhin gibt Du Doku für apache an, obwohl heinero explizit angibt, apache2 zu nutzen.
Der Link sollte also eher auf http://httpd.apache.org/docs-2.1/vhosts/ zeigen ... ;-)

Gruß

Die Einschränkung ist protokoll- und nicht applikationsbedingt, auf welchen Webserver in welcher Version ich verweiße, ist also nicht maßgeblich.

Hab dich leider nicht ganz verstanden, imho sind meine Aussagen richtig, vielleicht habe ich mich mißverständlich oder zu knapp ausgedruckt.

Deswegen nochmals der Versuch ;) :

Ein Apache Server mit einer IP-Adresse kann beliebig viele HTTP-Domains verwalten, allerdings nur eine HTTPS - Domain.

Lasse ich den Apache Server neben den Standard HTTPS Port 443 noch auf weiteren Ports "lauschen", kann pro Port eine weitere Domäne per HTTPS verwaltet werden.

Diese Konfiguration ist aber im produktiven Einsatz nicht zu empfehlen.

Gruß
Terran

Stormbringer
01.01.05, 16:22
Ok, so rum paßt es!
Bei namensbasierter Konfig ist nur eine SSL Konfig nutzbar.

Ich bezog auf den Teil ", namensbasierte virtuelle Hosts sind mit SSL nicht möglich.", war so nicht korrekt ist, da ein SSL Host nutzbar ist, aber halt auch wirklich nur einer, nicht mehrere. :-)

Da ich in der Doku zu apache2 aber nichts bezüglich einer Einschränkung gefunden hatte, gab ich nur den Denkansatz der komplett separierten Konfigs.

Gruß

heinero
01.01.05, 17:41
Morgen,

Apache benötigt pro SSL Zertifikat eine eigene IP-Adresse,
namensbasierte virtuelle Hosts sind mit SSL nicht möglich.

Siehe auch :

http://httpd.apache.org/docs/vhosts/name-based.html

Gruß
Terran

Das klingt logisch. Da hätte ich auch selbst drauf kommen können. Naja, ein Zertifikat mit dem cn *.domain1.net hat zumindest was die eine komplette Domain betrifft Abhilfe geschaffen. Nicht schön, aber es funktioniert.

Gruß,
Heiner

SirSydom
14.11.06, 12:10
Das Thema ist zwar schon etwas älter, aber es passt.

Ich möchte auf einem Server mit einer IP-Adresse versch. namensbasierte vhosts bedienen, also zb domain1.tld und domain2.tld zeigen beide auf meine IP.

Nun kann ich ja per chosts und ServerName recht gut separieren, es wird aber immer das Zertifikat von domain1.tld benutzt, obwohl ich im vhosts der domain2.tld explizit ein andere zertifikat angegeben habe.

Gibt es vielleicht doch einen Workaround? IP-Adresse sind teuer und ein Mismatch mit den Zertifikaten nicht aktzeptabel..