====== 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]] \\