====== Namensbasierte vhosts via https:// bei ispCP via GnuTLS ======
//Die Grundlagen und Schritte welche nötig sind um eine eigene Zertifizierungsstelle und entsprechende Zertifikate zu erstellen findet Ihr [[http://isp-control.net/documentation/de:howto:security:create_your_own_ssl_ca_and_secure_multiple_services| hier]]. Dieses Howto bezieht sich lediglich auff die Einrichtung von gnuTLS mit bereits erstellten Zertifikaten.//
Mit dem Apache mod_ssl-Modul ist ein Zertifikat nur für eine IP-Adresse verwendbar. Verwaltet man jedoch mehrere Webseiten (vhosts) auf einem Server und möchte für mehr als eine dieser Webseiten ein eigens ausgestelltes Zertifikat nutzen, bietet sich die Verwendung von gnuTLS an.
GnuTLS bietet die Möglichkeit für jeden vhost ein eigenes Zertifikat zu hinterlegen.
===== Installation von gnuTLS unter Debian Lenny =====
Die Installation ist sehr einfach! In der Konsole folgende zwei Befehle aufrufen:
sudo aptitude install libapache2-mod-gnutls
a2enmod gnutls
Der erste Befehl installiert die nötigen Pakete, der zweite Befehl installiert das Modul in die Apache-Umgebung. Zum entfernen eines Moduls wird einfach "a2dismod xxxx" aufgerufen.
Damit nun der Webserver auch auf SSL-Anfragen reagiert, muss apache angewiesen werden auf Port 443 zu horchen. dazu öffne die Datei /etc/apache2/ports.conf und füge folgendes hinzu:
Listen 443
Listen 443
Hier haben wir nun direkt eine Sicherheitsabfrage eingebracht, die apache nur dann auf Port 443 horchen lässt, wenn das mod_ssl Modul, oder das mod_gnutls-Modul aktiviert sind. Andernfalls würde apache beim Starten ein Fehler zurückgeben, wenn keine vhosts für SSL (Port 443) definiert wurden.
Nun muss in der Datei /etc/ispcp/apache/working/ispcp.conf noch folgendes Hinzugefügt werden (am besten in der Nähe des Bereits existierenden Eintrags für Port 80):
NameVirtualHost 78.46.21.244:443
Danach den Webserver restarten:
apache2ctl restart
\\
==== Einrichten eines vhosts für https ====
Für jeden vHost der via SSL erreichbar sein soll, müssen nun die entsprechenden Zertifikate mit gnuTLS geladen werden.
Dazu wechsel in das Verzeichnis /etc/apache2/sites-available.
Hier erstellen wir eine neue Datei - es steht dir offen für jede Domain ne eigene Datei zu erstellen, oder alle in eine Datei zu schreiben. Wenn du für jede Domain ne eigene Datei erstellst, benenne Sie xx_ssl_domainname.conf
\\
touch 01_ssl.conf
\\
Nun öffne die Datei mit einem Texteditor deiner Wahl. Hier eine Beispielkonfiguration dieser Datei (wieder mit mod_ssl und ggnuTLS Weiche):
ServerName admin.meineDomain.de
DocumentRoot /var/www/virtual/meineDomain.de/htsdocs/
ErrorLog /var/log/apache2/users/ssl.meineDomain.de-error.log
TransferLog /var/log/apache2/users/ssl.meineDomain.de-access.log
SSLEngine On
SSLProtocol all
SSLCipherSuite HIGH:MEDIUM
SSLCertificateFile /etc/ssl/public/example.localhost.crt
SSLCertificateKeyFile /etc/ssl/private/example.localhost.key
GnuTLSEnable on
GnuTLSPriorities SECURE:!MD5
GnuTLSCertificateFile /etc/ssl/public/example.localhost.crt
GnuTLSKeyFile /etc/ssl/private/example.localhost.key
Include /etc/apache2/mods-available/fcgid_ispcp.conf
FCGIWrapper /var/www/fcgi/oekorenta-portal.de/php5-fcgi-starter .php
Options +ExecCGI
AllowOverride None
Options +ExecCGI MultiViews -Indexes
Order allow,deny
Allow from all
\\
Für den Fall, dass default-ssl geladen sein sollte, entlade diese Konfiguration
a2dissite default-ssl
danach laden wir unsere neue SSL-Konfiguration für "meineDomain.de":
a2ensite 01_ssl.conf
\\
Dann noch den Apache restarten und fertig:
apache2ctl restart
\\
Jetzt im Broser die Eingerichtete Domain testen
https://meineDomain.de
==== Troubleshooting / Fehlerbehebung ====
Vor allen anderen Tests, sollte geprüft werden, welche vhosts Apache erkannt hat, und ob der gewünschte bzw. hinzugefügte Host vorhanden ist:
apache2ctl -t -D DUMP_VHOSTS 2>&1 | less
**Problem:**
\\
Eine Webseite ist via https:// erreichbar, und html, xml und andere Dateien werden auch sauber angezeigt. Allerdings werden keine PHP-Dateien angezeigt. Stattdessen kommt ein Fehler "503 Service Unavailable", oder ein "Internal Server Error".
\\
**Antwort:** \\
Drei Dinge sind zu checken:
- Ist das Modul gnutls geladen ( a2enmod gnutls ) ?
- Steht in der ssl.conf für diesen Hostabschnitt mod_fcgid.c
- Wurde der Server neu gestartet (apache2ctl relstart )
\\
\\
**Problem:**\\
Nachdem eine weitere Domain mit eigenem Zertifikat eingerichtet wurde, erscheint diese Domain dennoch nach Aufruf via https: mit einer Fehlermeldung. Die Meldung bezieht sich dabei auf das hauptzertifikat des Servers, so dass das speziell für die neue Domain eingerichtete Zertifikat scheinbar nicht berücksichtigt wird.
\\
**Antwort:** \\
\\
===== Quelle ===== \\
[[http://wiki.xstable.de/doku.php?id=ispcp:https_mit_gnutls_unter_ispcp| Wiki von xstable.de]]
\\