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-Key: 201366

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

Printed on: April 19, 2024 at 02:04 o'clock

Member: nxclass
nxclass Feb 07, 2013 updated at 07:47:41 (UTC)
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.
Member: catachan
catachan Feb 07, 2013 at 18:41:35 (UTC)
Goto Top
Hi

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

LG
Member: LordGurke
LordGurke Feb 07, 2013 at 20:03:59 (UTC)
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.