====== SSL-Verschlüsselung einer Website ====== Insofern eine Website per SSL verschlüsselt werden soll, bieten wir zwei Möglichkeiten an: Entweder der [[#eigenes_bestehendes_ssl-zertifikat_importieren|Import eines bereits bestehenden Zertifikates]] oder die automatische Erstellung eines [[#let_s_encrypt|Let's Encrypt-Zertifikates]]. ===== Eigenes, bestehendes SSL-Zertifikat importieren ===== Insofern bereits ein SSL-Zertifikat besteht, kann es in der Webspace-Verwaltung ganz einfach importiert werden. {{ :webhosting:liveconfig:pf_liveconfig_lets_encrypt1.png?nolink |}} Zuerst navigiert man zu **Hosting** -> **SSL-Zertifikate**. {{ :webhosting:liveconfig:pf_liveconfig_lets_encrypt6.png?nolink |}} Im Reiter **SSL-Zertifikate** wird **neues Zertifikat** ausgewählt. Es erscheint das folgende Fenster: {{ :webhosting:liveconfig:pf_liveconfig_import_ssl1.png?nolink |}} Zum Importieren der einzelnen Dateien, müssen diese mit einem Text-Editor lokal geöffnet werden und der Inhalt per Copy & Paste in das jeweilige Textfeld eingefügt werden. Als erstes klickt man bei **Privater Schlüssel** auf **importieren**. Hier kopiert man nun den Inhalt der Datei des privaten Keys hinein (meist *.key). Im nächsten Schritt wird das **Zertifikat** an sich importiert (meist *.crt). Sollten noch **CA-Zwischenzertifikate** (bspw. **ca.crt**) bestehen, so sind diese auch zu importieren. Im vorletzten Schritt ist es ganz sinnvoll eine kurze, eindeutige **Bemerkung** für das Zertifikat zu vergeben. Bestätigt wird es durch einen Klick auf **speichern**. Insofern kein Fehler ausgegeben wird, wurde das Zertifikat erfolgreich importiert. ===== Let's Encrypt ===== Im Rahmen unserer SSD-Webhosting Produktsparte unterstützen wir die Benutzung von [[https://letsencrypt.org/|Let's Encrypt]] SSL-Zertifikaten. Diese Zertifikate können ganz einfach über die Webspace-Verwaltung hinzugefügt werden. ==== Einrichtung ==== {{ :webhosting:liveconfig:pf_liveconfig_lets_encrypt1.png?nolink |}} Im Menü auf **Hosting** -> **SSL-Zertifikate** klicken. {{ :webhosting:liveconfig:pf_liveconfig_lets_encrypt2.png?nolink |}} Anschließend zuerst auf **Zertifikatsverwaltung** und dann auf **Zugang hinzufügen** klicken. Jetzt sollte folgendes Formular sichtbar sein: {{ :webhosting:liveconfig:pf_liveconfig_lets_encrypt3.png?nolink |}} Hier kann entweder ein **neuer Zugang** erstellt werden oder ein **bestehender Schlüssel** importiert werden. Insofern noch kein Zugang besteht, kann ein neuer durch Eingabe der E-Mail-Adresse erstellt werden - eine Telefonnummer ist hier nicht verpflichtend. Nachdem das Formular ausgefüllt wurde, bestätigt man mit einem Klick auf **weiter**. Der Schlüssel wird kurzerhand erzeugt: {{ :webhosting:liveconfig:pf_liveconfig_lets_encrypt4.png?nolink |}} Danach erscheint folgendes Formular: {{ :webhosting:liveconfig:pf_liveconfig_lets_encrypt5.png?nolink |}} Hier müssen die **Geschäftsbedingungen akzeptiert** werden und anschließend kann es per Klick auf **speichern** weiter gehen. Let's Encrypt wurde erfolgreich eingerichtet! Jetzt können Zertifikate erstellt werden! ==== Zertifikat erstellen ==== Sobald Let's Encrypt eingerichtet wurde, können beliebig viele SSL-Zertifikate erstellt werden. Wie das funktioniert, zeigt die folgende Dokumentation. {{ :webhosting:liveconfig:pf_liveconfig_lets_encrypt1.png?nolink |}} Im Menü auf **Hosting** -> **SSL-Zertifikate** klicken. {{ :webhosting:liveconfig:pf_liveconfig_lets_encrypt6.png?nolink |}} Im nächsten Schritt einmal auf **SSL-Zertifikate** und anschließend auf **neues Zertifikat** klicken. Es erscheint folgendes Fenster: {{ :webhosting:liveconfig:pf_liveconfig_lets_encrypt7.png?nolink |}} Hier zuerst auf **ACME** klicken, anschließend den Haken bei **Zertifikat automatisch verwalten (mit ACME)** setzen und danach die gewünschte Domain bei //Domainname// eintragen. Wir empfehlen außerdem den Haken bei **HTTPS mit dem neuen SSL-Zertifikat konfigurieren** zu setzen und bei Bedarf auch den Haken bei **Weiterleitung von HTTP auf HTTPS konfigurieren**. Anschließend die Erstellung mit einem Klick auf **speichern** abschließen. Der Erstellungsprozess des Zertifikates kann ein paar Minuten dauern. Sobald das Zertifikat fertig ist, wird - insofern der Haken gesetzt wurde - SSL automatisch bei der angegebenen Domain aktiviert und die Zertifikatsübersicht sollte so ähnlich aussehen: {{ :webhosting:liveconfig:pf_liveconfig_lets_encrypt8.png?nolink |}} ==== Limits ==== Die Zertifizierungsstelle von Let's Encrypt hat zwecks Missbrauchsvorbeugung ein paar Limits festgelegt: * Das Limit der **in einem Zertifikat inkludierten Domainnamen** liegt bei **100** * Zertifikate, die **eine Domain** enthalten, sind limitiert auf **20 pro Domain pro Woche** * Ein Zertifikat mit **exakt dem selben Set aus mehreren Domains** kann **5 Mal pro Woche pro Set** angefordert werden Weiteres bitte der Quelle entnehmen. //Quelle: https://letsencrypt.org/docs/rate-limits/ // ===== SSL bei einer (Sub-)Domain aktivieren ===== Die Aktivierung von SSL für eine Domain ist recht simpel. Sobald ein Zertifikat dafür vorhanden ist, kann dies vollzogen werden. Dabei ist es egal, ob es sich um ein reguläres SSL-Zertifikat oder eines von Let's Encrypt handelt. {{ :webhosting:liveconfig:pf_liveconfig_activate_ssl1.png?nolink |}} Im Menü klickt man auf **Hosting** -> **Domains**. {{ :webhosting:liveconfig:pf_liveconfig_activate_ssl2.png?nolink |}} Die passende Domain aus der Liste auswählen und anklicken. Es erscheint das folgende Fenster: {{ :webhosting:liveconfig:pf_liveconfig_activate_ssl3.png?nolink |}} Jetzt den Haken bei **HTTPS-Zugriff** setzen und das passende SSL-Zertifikat aus dem Menü direkt darunter auswählen. Bei Bedarf eine Weiterleitung von **HTTP** zu **HTTPS** setzen, indem bei **HTTP-Zugriff** **Weiterleitung** ausgewählt wird und unter **Ziel** zu **%%https://%%** weitergeleitet wird. Soll der Pfad mit übernommen werden, so fügt man noch **/*** hinzu, also in dem Sinne: **%%https:///*%%**. Anschließend mit einem Klick auf **speichern** bestätigen und über die soeben eingerichtete SSL-Unterstützung ===== HSTS aktivieren ===== Was HSTS ist, das erklärt Wikipedia eigentlich ganz gut: **HTTP Strict Transport Security** (HSTS) ist ein Sicherheitsmechanismus für HTTPS-Verbindungen, der sowohl vor Aushebelung der Verbindungsverschlüsselung durch eine downgrade Attacke als auch vor Session Hijacking schützen soll. Hierzu kann ein Server mittels des HTTP response header Strict-Transport-Security dem Browser des Anwenders mitteilen, in Zukunft für eine definierte Zeit (max-age) ausschließlich verschlüsselte Verbindungen für diese Domain zu nutzen. Optional lässt sich dieses über den Parameter //includeSubDomains// auf alle Subdomains ausweiten, also nicht nur auf %%https://test.de%% sondern auch auf %%https://subdomain.test.de%%. //Quelle: https://de.wikipedia.org/wiki/HTTP_Strict_Transport_Security // === Apache === Wenn Apache als Webserver benutzt wird, wird die Aktivierung über dessen **.htaccess**-Dateien erledigt. Sie verbinden sich also entweder per SSH oder FTP mit Ihrem Account und navigieren zum öffentlichen Verzeichnis der gewünschten Domain oder Subdomain. Anschließend legen sie die Datei **.htaccess** an, falls diese noch nicht existiert. Dort ist einer der folgenden Einträge anzulegen: Der Wert **max-age** ist in dem Fall auf //1 Jahr// vordefiniert. Natürlich ist dieser, je nach Belieben, frei definierbar. Die Angabe geschieht in Sekunden. **Nur Haupt-Domain: ** Header set Strict-Transport-Security "max-age=31536000" env=HTTPS **Mit Subdomains: ** Header set Strict-Transport-Security "max-age=31536000"; includeSubDomains env=HTTPS === nginx === Die Aktivierung von HSTS für nginx muss über die Shell erfolgen. Dafür haben wir ein Tool entwickelt, das auf den Namen **pf-nginx-setup** hört. Bitte wechseln Sie dazu zur [[webhosting:liveconfig:webserver#hsts_aktivieren|Dokumentation des Tools]].