huffman
Goto Top

Apache SSL Subdomain

Guten Abend!
Vor einigen Wochen habe ich mir bei StartSSL ein gratis Zertifikat erstellen lassen.
Mein Zertifikat ist auf folgende Domain (bzw. auch Subdomain) ausgestellt:

DNS-Name=ssl.mydomain.de
DNS-Name=mydomain.de

So, nun habe ich auch den Apachen so konfiguriert, dass ich auf mydomain.de über SSL eine Verbindung aufbauen kann.
So weit, so gut!
Die Einstellung funktionierte wunderbar, bis ich mir dachte, dass ich auf weitere Subdomains auch gerne über eine verschlüsselte Verbindung zugreifen möchte.
Ich wollte das so angehen, dass ich, äquivalent zu meinen VHosts, einfach eine weitere <VirtualHost> - Direktive einfüge. Das ganze sah nun so aus:

NameVirtualHost *:443

<VirtualHost *:443>
   ServerName mydomain.de
   ServerAlias mydomain.de
   DocumentRoot /var/www/mydomain/

   SSLEngine on
   SSLCertificateFile    /etc/ssl/certs/mydomain.de.crt
   SSLCertificateKeyFile /etc/ssl/private/mydomain.de.key

   ErrorLog "/var/log/apache2/error.log"  
</VirtualHost>

<VirtualHost *:443>
   ServerName sub.mydomain.de
   DocumentRoot /var/www/sub/

   SSLEngine on
   SSLCertificateFile    /etc/ssl/certs/mydomain.de.crt
   SSLCertificateKeyFile /etc/ssl/private/mydomain.de.key

   ErrorLog "/var/log/apache2/error.log"  
</VirtualHost>

Interessant war, dass nun die Subdomain über https erreichbar war, die Hauptseite jedoch nicht mehr, lediglich ein 404 Error trat auf!

Da ich noch weitere Subdomains besitze, wäre es natürlich toll, wenn ich nur einmal konfigurieren muss und alle Subdomains über https verwenden kann.

Gibt es hierfür eine Möglichkeit mit meinen derzeitigen Mitteln? Bzw. seht ihr einen Fehler in meiner Konfiguration?

Ich danke für eure Hilfe!

Content-ID: 201366

Url: https://administrator.de/contentid/201366

Ausgedruckt am: 05.11.2024 um 12:11 Uhr

nxclass
nxclass 07.02.2013 aktualisiert um 08:47:41 Uhr
Goto Top
Gibt es hierfür eine Möglichkeit mit meinen derzeitigen Mitteln?
Was du benötigst ist ein Wildcardzertifikat - dieses kannst du dir natürlich auch unter Linux und mit installiertem openssl auch selbst erstellen.
openssl req \
-x509 -nodes -days 3652 \
-subj "/CN=*.$DOMAIN/O=none/OU=private/C=DE/ST=$STATE/L=$CITY/emailAddress=$EMAIL" \  
-newkey rsa:1024 -keyout $DOMAIN.key -out $DOMAIN.self-signed.crt

Weiterhin musst du bei deiner Server Konfig etwas tricksen, da SSLCertificateFile und SSLCertificateKeyFile nicht mehr innerhalb der VirtualHost Konfiguration stehen darf.
Listen *:443
NameVirtualHost *:443

SSLCertificateFile /etc/apache2/ssl/domain.de.crt
SSLCertificateKeyFile /etc/apache2/ssl/domain.de.key

<VirtualHost *:443>
  ServerName www.domain.de
  SSLEngine on
</VirtualHost>
<VirtualHost *:443>
  ServerName subdomain.domain.de
  SSLEngine on
</VirtualHost>

.. es gibt da reichlich links dazu im Web.
catachan
catachan 07.02.2013 um 19:41:35 Uhr
Goto Top
Hi

oder du verwendest SNI um 2 verschiedene SSL Sites auf einer IP laufen zu lassen

LG
LordGurke
LordGurke 07.02.2013 um 21:03:59 Uhr
Goto Top
@nxclass: Die kostenlosen StartSSL-Zertifikate werden i.d.R. auf zwei Hosts ausgestellt.
Zudem ist es sehr wohl erlaubt ein SSL-Zertifikat im VHost-Kontext anzugeben:
http://httpd.apache.org/docs/2.2/mod/mod_ssl.html#sslcertificatefile

Da (so habe ich es verstanden) der HTTPD scheinbar den falschen VHost lädt, liegt das Problem vermutlich außerhalb des SSL-Teils.
Probier mal die Subdomain ÜBER dem anderen VHost zu definieren, habe mit dem httpd schon interessante Dinge erlebt.
Falls das nicht funktioniert, kann es helfen den "ServerName"-Teil aus dem VHost "mydomain.de" zu entfernen und ausschließlich mit ServerAlias zu arbeiten. Das zu mischen bringt auch immer gerne Probleme mit sich.


Falls du mehr als eine Subdomain damit sichern willst hat nxclass aber Recht: Dann braucht es ein Wildcard-Zertifikat oder zumindest eines mit mehreren SAN-Hosts.