Suche
  • Programmierung, Wordpress, Serveradministration
  • Alles aus einer Hand, von freundlichen IT Experten aus Berlin
Suche Menü

Apache Virtual Host mit SSL einrichten

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!

Autor: Kevin

Hallo lieber Leser! Ich stehe hinter Keleo, bin Softwareentwickler und freier IT Berater und blogge hin und wieder über Themen die mir im Berufsleben begegnen. Sollte Dir der Artikel geholfen haben, dann hinterlasse mir doch ein Kommentar. Wenn Du mehr über mich erfahren willst, folge dem Link in .

6 Kommentare Schreibe einen Kommentar

  1. muss ich nicht in der init.d/apache2 auch noch irgendwie reinschreiben, dass er mit ssl – also DSSL flag – starten soll?

    Antworten

  2. Hallo klimmbimm,
    die init.d Startskripte musst Du nicht anpassen, nur die Apache Config. Wie das geht, kann sich allerdings Distributionsabhängig unterscheiden.

    Antworten

  3. 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…

    Antworten

  4. @Dennis:
    Ein ähnliches Problem hab ich auch.
    Habe
    phpmyadmin..de
    und
    webmail..de
    eingerichet. Beim Aufruf von webmail…. bekomme ich den Inhalt von phpmyadmin…

    Antworten

  5. Es wäre viel einfacher die Seite nach Erstellung im Ordner /etc/apache2/sites-avaible/ per a2ensite zu erlauben und somit auch apache2 wissen lassen, dass dort eine Seite existiert. Diese Funktion wurde ja nicht erfunden, damit man sie umgeht.

    Antworten

Schreibe einen Kommentar

Pflichtfelder sind mit * markiert.