Achtung: Dieser Artikel ist bereits älter und eventuell nicht mehr aktuell
Am 3. Dezember startet http://letsencrypt.org die public Beta Phase und stellt kostenlose SSL Zertifikate aus.
Die folgende Anleitung beschreibt den Vorgang während der Closed Betatestphase. Es kann also sein, dass sich später in der Live-Phase noch Änderungen im Ablauf ergeben.
Für die Installation eines Zertifikats ist ein eigener Webserver mit Shellzugang erforderlich. Es werden während der Installation auf dem Webserver mehrere Ordner angelegt. Dort werden dann auch die Zertifikate gespeichert. Diese Möglichkeiten sind bei Shared Hosting Angeboten leider nicht gegeben, so dass Websites, die in einer Shared Hosting Umgebung laufen, noch warten müssen, ob die Provider letsencrypt Zertifikate anbieten. Eine selbstständige Installation ist nur bei eigenem Server mit Shellzugang möglich.
Auf dem Server muss git installiert sein. Git lässt sich mit folgendem Befehl installieren:
sudo apt-get update sudo apt-get install git
Anschließend kann letsencrypt installiert werden
git clone https://github.com/letsencrypt/letsencrypt cd letsencrypt ./letsencrypt-auto --agree-tos --server \ https://acme-v01.api.letsencrypt.org/directory certonly
Während der Installation werden für die Authentifizierung zwei Auswahlmöglichkeiten gegeben
Apache Webserver (Alpha) und
Autmatically use a temorary webserver (standalone).
Ich wähle die Option 1 „Apache Web Server“
Anschließend wird die Angabe einer E-Mail Adresse gefordert, die für Benachrichtigungen oder zur Wiederherstellung bei verlorenen Schlüsseln verwendet werden kann.
Im nächsten Schritt muss den AGB von letsencrypt zugestimmt werden.
Zu guter Letzt wird man aufgefordert, die Domains einzugeben. Mehrere Domains können mit Komma, Leerstelle oder beidem getrennt sein. Der Domainname muss hier mit und ohne www getrennt eingegeben werden.
Nun erfolgt die Installation, während der letsencrypt mehrere Ordner auf dem Server anlegt: Einen Ordner letsencrypt mit Unterordnern im Verzeichnis root und einen Ordner letsencrypt mit Unterordnern im Verzeichnis etc. Nach erfolgreicher Installation erfolgt ein Hinweis, wo die Zertifikate zu finden sind.
Im Ordner letsencrypt, der im etc Verzeichnis liegt, befindet sich ein weiterer Ordner mit dem Namen live. In diesem Ordner live werden die Zertifikate gespeichert:
Diesen Ordner sollte man sich als Backup per ftp runterladen.
Nun müssen die Zertifikate für die Domain hinterlegt werden. Die Vorgehensweise ist davon abhängig, welche Administrationsoberfläche benutzt wird. In meinem Fall handelt es sich um die Server Panel Software i-mscp
Um die Eingabe von SSL Zertifikaten überhaupt vornehmen zu können, muss unter Allgemeine Einstellungen SSL für den Server aktiviert sein
Sobald SSL aktiviert ist, lassen sich bei den Domains SSL Zertifikate hinzufügen. Es gibt hier drei Eingabefenster:
1. Privater Schlüssel
2. Zertifikat
3. Intermediate Zertifikat
Im Live Ordner der Domain befinden sich jedoch vier Zertifikate:
cert.pem
chain.pem
fullchain.pem
privkey.pem
Welches gehört also wohin?
privlkey.pem ist einfach. Diese Datei beinhaltet den Privaten Schlüssel. Die Datei lässt sich mit einem Texteditor öffnen und der Inhalt wird per copy & paste in das Feld für den Privaten Schlüssel kopiert:
In das Feld Zertifikat kopiere ich den Inhalt der Datei cert.pem
In das Feld Intermediate Zertifikat kopiere ich den Inhalt der Datei chain.pem
Nun nur noch auf „Aktualisieren“ klicken und das Zertifikat ist gespeichert.
Nun kann im Backend von WordPress unter Einstellungen die WordPress Adresse und die Website Adresse auf https umgeändert werden. Anschließend muss geprüft werden, ob in der Browserzeile tatsächlich das grüne Schloss-Symbol zu sehen ist, oder ob es unter Umständen noch unsichere Elemente auf der Seite gibt. Unsichere Elemente sind Verlinkungen zu Websites, die nicht ssl verschlüsselt sind. Hier muss man dann das http:// durch zwei einfache Doppelstriche ersetzen.
Auf meiner Seite habe ich Bannerwerbung zum WordCamp Berlin eingebunden mit einer Verlinkung zu einer nicht verschlüsselten Seite. Deshalb erhalte ich in der Adresszeile des Browsers ein Warnsymbol
Um diese Warnung loszuwerden, wechsele ich in den Widgetbereich, wo die Bannerwerbung eingebunden ist und ändere die Links ab, indem ich jeweils das http: entferne und nur die beiden Schrägstriche stehen lasse
Nun ist die Warnung verschwunden und das sichere Symbol taucht wie gewünscht in der Adresszeile des Browsers auf
Nun soll noch verhindert werden, dass die Seite ohne Verschlüsselung unter der alten Adresse mit http:// aufgerufen werden kann.
Hier hilft ein Eintrag in die .htaccess Datei
<ifmodule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] </ifmodule>
Dies ist aber noch nicht alles. Alle Bilder die aus der Mediathek vor der Umstellung in die Inhalte eingefügt wurden verlinken noch zur nicht verschlüsselten Domain.
Mit dem Plugin Better Search Replace die Datenbank nach Links zur nicht verschlüsselten Domain durchsuchen und mit einer https Verlinkung ersetzen. Es empfiehlt sich, zunächste einen Probedurchlauf ohne Ersetzungen vorzunehmen und die Ersetzung ganz genau auf eventuelle Tippfehler hin zu untersuchen, damit keine fehlerhaften Links entstehen. Wer Jetpack installiert hat, kann auch den Bilderdienst photon aktivieren. Dann werden alle Bilder mit verschlüsseltem Link in der WordPress Cloud gespeichert und von dort aus ausgeliefert. Dies entlastet zudem den Server und verkürzt die Ladezeiten.
Weitere Domains auf dem Server mit einem SSL Zertifikat versehen
Befinden sich auf dem Server noch weitere Domains, die mit einem SSL Zertifikat versehen werden sollen, können weitere Zertifikate wie folgt generiert werden.
Im Ordner /etc/letsencrypt/ wird eine Configurationsdatei cli.ini angelegt (die email durch die eigene E-Mail Adresse ersetzen)
# This is an example of the kind of things you can do in a configuration file. # All flags used by the client can be configured here. Run Let's Encrypt with # "--help" to learn more about the available options. # Use a 4096 bit RSA key instead of 2048 rsa-key-size = 4096 # Always use the staging/testing server server = https://acme-v01.api.letsencrypt.org/directory # Uncomment and update to register with the specified e-mail address email = # Uncomment to use a text interface instead of ncurses # text = True # Uncomment to use the standalone authenticator on port 443 # authenticator = standalone # standalone-supported-challenges = dvsni # Uncomment to use the webroot authenticator. Replace webroot-path with the # path to the public_html / webroot folder being served by your web server. # authenticator = webroot # webroot-path = /usr/share/nginx/html
Anschließend kann ein weiteres Zertifikat mit folgendem Code generiert werden (domain.com muss durch die jeweilige Domain ersetzt werden):
cd letsencrypt ./letsencrypt-auto certonly --agree-tos --renew-by-default -a webroot --webroot-path /var/www/virtual/domain.com/htdocs/ -d domain.com -d www.domain.com
Laufzeit des Zertifikats
Die von Let’s Encrypt ausgestellten Zertifikate haben eine Laufzeit von drei Monaten. Eine automatische Verlängerung gibt es noch nicht, sondern muss jeweils rechtzeitig in die Wege geleitet werden.
Die Verlängerung wird einfach die gleiche Befehlszeile wie beim Erstellen des Zertifikats noch einmal eingegeben.
Weiterführende Links:
Let’s Encrypt – How It Works
Herzlichen Dank für den diesen tollen Tip!
Bei dem Hoster all-inkl kriegt man letsencrypt Zertifkikate kostenlos eingebunden.
Ordner live wird nicht erstellt…
Der Ordner etc/letsencrypt ist aber angelegt worden?
Ja