Blog der Webagentur Keleo aus Bonn.

 

Apache Virtual Host mit SSL einrichten

Von • 05.07.2009 • 5 Kommentare

 

Ein kurzes HOWTO wie man einen Virtual Host für Apache mit einem selbst generierten SSL Zertifikat einrichtet. Diese Anleitung richtet sich nicht direkt an Beginner, da hier keinerlei Grundlagen erläutert werden. Bei Fragen versuche ich aber gerne in den Kommentaren zu helfen.

Die Anleitung bezieht sich auf einen Debian Etch Server und setzt Root Rechte vorraus.

Generierung des benötigen Zertifikats

Der folgende Punkt ist optional und nur notwendig wenn man vor hat, in Zukunft Zertifikate mit denselben Angaben zu erstellen. Hierzu editiert man das SSL Template unter /usr/share/ssl-cert/ssleay.cnf.

Nun erstellt man ein Verzeichniss um die Zertifikatsdaten zu speichern. Dieses sollte unbedingt vor fremden Zugriff geschützt sein, als Beispiel nehmen wir hier /root/ssl/ welches wir in späteren Schritten noch benötigen. Danach erstellen wir mit openssl den Key. Wobei domain-name.key natürlich durch den echten Namen ersetzt werden sollte. Ob 1024 bit genug sind, müsst Ihr selbst entscheiden, genauso was Ihr bei den einzelnen Punkten des Schlüssels angebt!

cd /root/
mkdir ssl
cd ssl
openssl genrsa -out domain-name.key 1024

Danach wird für das Zertifikat ein "Certificate Signing Request" generiert:

openssl req -new -key domain-name.key -out domain-name.csr

Zur kurzen Kontrolle kann man überprüfen obs stimmt:

openssl req -noout -text -in domain-name.csr

Nun muß man das Zertifikat noch signieren:

openssl x509 -req -days 365 -in domain-name.csr -signkey domain-name.key -out domain-name.crt

Das war es auch schon, das Zertifikat ist Euer! Weiter gehts mit...

Apache SSL Modul (mod_ssl) aktivieren

Entweder man aktiviert es manuell, indem man einen Softlink setzt:

cd /etc/apache2/mods-enabled/
ln -s ../mods-available/ssl.conf ssl.conf
ln -s ../mods-available/ssl.load ssl.load

oder indem man a2enmod nutzt:

sudo a2enmod ssl

Als nächstes muß man...

Apaches SSL Port öffnen

Damit der Apache auf dem SSL Port 443 auch Anfragen entgegen nimmt, muß dies einmalig aktiviert werden in der Datei /etc/apache2/ports.conf.

Das Listen aktiviert Ihr durch den folgenden Code:

Listen 80

<IfModule mod_ssl.c>
    Listen 443
</IfModule>

Jetzt wollen wir dem Apache eine Lernphase gönnen und aktivieren die vorher gemachten Einstellungen durch einen Neustart mittels:

/etc/init.d/apache2 restart

Eventuell reicht auch ein /etc/init.d/apache2 force-reload, hab ich aber nicht getestet.

Fast fertig, jetzt muß man nur noch...

SSL für den Virtual Host aktivieren

Da der Rest nur Config Kram ist, sollte ein Code Beispiel eigentlich am hilfreichsten sein:

NameVirtualHost *:443

<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /root/ssl/domain-name.crt
SSLCertificateKeyFile /root/ssl/domain-name.key

ServerAdmin root@localhost
ServerName localhost

DocumentRoot /var/www/domain-name/
</VirtualHost>

Erstellt die VirtualHost Konfiguration unter /etc/apache2/sites-available/domain-name und verlinkt diese danach noch:

vim /etc/apache2/sites-available/domain-name
cd /etc/apache2/sites-enabled/
ln -s /etc/apache2/sites-available/domain-name .

Nochmal Apaches Konfiguration neuladen:

/etc/init.d/apache2 reload

Und schon solltet Ihr SSL auf Eurem VirtualHost nutzen können!

« Zum Blog Beitrag kommentieren

 

Kommentare

 
  1. klimmbimm
    muss ich nicht in der init.d/apache2 auch noch irgendwie reinschreiben, dass er mit ssl - also DSSL flag - starten soll?
  2. Kevin
    Hallo klimmbimm,
    die init.d Startskripte musst Du nicht anpassen, nur die Apache Config. Wie das geht, kann sich allerdings Distributionsabhängig unterscheiden.
  3. Hiran Chaudhuri
    Dieses Flag (SSL) braucht es, um in der httpd.config den Bereich zu aktivieren, der in eingeklammert ist. Das obige Beispiel macht es nicht - also braucht es das Flag auch nicht.

    http://httpd.apache.org/docs/2.2/mod/core.html#ifdefine
  4. Dennis
    Wie ist es denn möglich, nur eine subdomain einzurichten bzw. 2 verschiedene Zertifikate für Subdomain und Maindomain.

    Im Moment hab ich es so eingerichtet, dass das Zertifikat für die Subdomain eingerichtet ist, aber dummer weise kommt man mit https://maindomain auch auf die Subdomainseite...
  5. Alex
    @Dennis:
    Ein ähnliches Problem hab ich auch.
    Habe
    phpmyadmin..de
    und
    webmail..de
    eingerichet. Beim Aufruf von webmail.... bekomme ich den Inhalt von phpmyadmin...
 

Kommentar hinzufügen

 

Ältere Beiträge