TLS / SSL
Hostsharing besitzt ein SSL-Zertifikat, das auch von Mitgliedern genutzt werden kann.
Neu aufgeschaltete Domains haben für htdocs, subs, cgi und fastcgi standardmäßig getrennte *-ssl Ordner. Damit kann man auf sichere Weise SSL-Inhalte von Nicht-SSL Inhalten trennen. (Ebenso beim /web Verzeichnis des Paketadmins.)
Bei Domains, die schon vor der Einführung dieses Features bestanden, sind die Verzeichnisse doms-ssl, subs-ssl, cgi-ssl und fastcgi-ssl standardmäßig als symbolische Links auf die entsprechenden nicht-ssl Verzeichnisse angelegt worden. Diese Symlinks stellen die Kompatibilität mit der früheren SSL Option her. Damals gab es nur einen Ordner für http und https.
Wer SSL und Nicht-SSL sauber trennen möchte oder ganz andere Inhalte anbieten möchte kann die Symlinks löschen und durch Verzeichnisse ersetzen. Wer seine Seiten innerhalb eines Verzeichnisbaums verwalten möchte, kann umgekehrt die Verzeichnisse löschen und (ggf. auch nur selektiv für einige Unterverzeichnisse) Symlinks anlegen.
Damit kann auf die Domain auch über https:// Verbindungen zugegriffen werden. Als Zertifikat wird standardmäßig das Wildcard-Zertifikat von Hostsharing verwendet. Im Browser muss man daher akzeptieren, dass das Zertifikat nicht zur eigenen Domain passt.
Bei Symlinks ist zu beachten, das die Seiten damit erstmal nur mit und ohne SSL abgerufen werden können. Eigene Konfigurations- bzw. Administrationsseiten z.B. lassen sich dadurch manuell sowohl per https:// als auch http:// erreichen.
Möchte man den Zugriff auf bestimmte Seiten nur mit SSL erlauben und automatisch auf SSL umschalten, muss dies mit einer .htaccess Datei erwirkt werden. in den betroffenen Verzeichnissen erfolgen.
Bei per Symlink zusammengeschalteten Verzeichnissen, kann dies für Verzeichnisse auf die nur per SSL zugegriffen werden soll, wie folgt erreicht werden:
# SSL so fordern, dass ggf. Basic Auth nur einmal innerhalb von SSL abgefragt wird. # #SSLOptions +StrictRequire #Bei HS festgelegt. SSLRequireSSL ErrorDocument 403 https://xyz00.hostsharing.net/https/URL/mit/entspechendem/Ziel/Verzeichnis
In diesem Beispiel wird auf eine xyz00 Domain umgeleitet für die das HS Zertifikat gilt. Liegen die Seiten nicht dort ist die entprechende URL des Speicherortes mit https:// anzugegeben.
Bei separaten Verzeichnissen für ssl und nicht-ssl kann auch ein permanenter Redirekt gelegt werden. Beispiel:
Redirect permanent / https://www.example.org/
Eigene SSL Zertifikate
Möchte man, dass eine Domain ohne Fehlermeldungen per SSL erreichbar ist, benötigt man ein Zertifikat einer Zertifizierungsstelle, die von den Browsern standardmäßig anerkannt wird.
Zudem benötigt man in seinem Paket eine eigene IP-Nummer, da dies die Voraussetzung (??? Noch aktuell ???) zur Nutzung von ssl-Verschlüsselung ist. Deshalb ist auch nur ein Zertifikat pro Paket möglich.
Zunächst muss man als Paket-Admin einen private key erzeugen und dann einen CSR. Wie das genau funktioniert, ist meistens von Seiten der Zertifizierungsstelle beschrieben.
Man kann aber auch ein kleines Skript nutzen, das Michael Hierweck aufgrund von einer Anleitung von Michaels Hönnig zur Erzeugung von Zertifikaten geschrieben hat:
#! /bin/sh #Nur Zugriffe für den Owner erlauben umask u=rwx,g=,o= #Zertifikat erzeugen openssl req -new -x509 -keyout ~/etc/cakey.pem -out ~/etc/careq.pem $* openssl rsa <~/etc/cakey.pem >~/etc/https.new cat ~/etc/careq.pem >>~/etc/https.new #Temporäre Dateien löschen rm ~/etc/cakey.pem rm ~/etc/careq.pem #Altes Zertifikat sichern cp ~/etc/https.pem ~/etc/https.old
Es können weitere Parameter angeben werden, z.B. -days 370.
Die Domain oder Wildcard (*.domain.TLD) für die das Zertifikat gilt, wird auf die Frage als Common Name angegeben.
Anschließend wird der Zertifizierungsstelle der csr übermittelt. Die Datei, die man dann von der Zertifizierungsstelle erhält, muss in das Verzeichnis /etc des Paketadmins kopiert werden. Das neue Zertifikat muss dann noch manuell aktiviert werden, d.h. in https.pem umbenannt werden. Damit kann man dies zu einem beliebigen späteren Zeitpunkt tun und das Zertifikat vorher prüfen.
Mit einem eigenen Zertifikat kann man dann mit
RequireSSL on
in der .htaccess Datei für alle Zugriffe https:// fordern.