FAQ
Wie kann ich Let's Encrypt nutzen?
Let's Encrypt ist eine kostenlose Möglichkeit domainvalidierte SSL Zertifikate für den Zugriff per https Protokoll auf eine Domain zu erhalten. Natürlich ist auch der verschlüsselte Zugriff auf andere Dienste (sendmail, dovecot) möglich, wenn dies entsprechend konfiguriert wird.
Die Zertifikate mit Let's Encrypt sorgen in Zukunft sicher für das 'Aussterben' von kostenpflichtigen Zertifikaten auf rein domainvalidierter Basis. Jedoch werden 'richtige' Zertifikate mit Unternehmensvalidierung oder sogar mit erweiterter Überprüfung (sog. EV Zertifikate) auch weiterhin ein wichtiges und unersetzbares Element sein, um z.B. Webshops etc. abzusichern. Denn hier geht es nicht nur um die verschlüsselte Übertragung, sondern auch - insbesondere für den Käufer - darum, wer wirklich hinter dem Shop steht. Dies lässt sich sicher auch in Zukunft nur mit kostenpflichtigen Zertifikaten ermöglichen, da für diese Prüfung immer ein entsprechender personeller Aufwand bei den Zertifikatsstellen nötig sein wird.
Dennoch sind die kostenlosen, domainvalidierten SSL Zertifikate von Let's Encrypt ein immenser Fortschritt, den wir unseren Kunden anbieten wollen. Let's Encrypt ist auf unseren Managed-Root Systemen vorinstalliert und kann auf die hier beschriebene Weise genutzt werden.
Einrichtung der Domain
Schritt 1 ist die Einrichtung der Domain, für die das Zertifikat erstellt werden soll. Dies wird für gewöhnlich mit easyTECC gemacht, damit es möglichst komfortabel ist.
Erstellen der Zertifikatsdateien
Für die tatsächliche Erstellung der Zertifikate begeben Sie sich per ssh auf die Konsole Ihres Servers. Wir gehen in diesem Beispiel davon aus, dass die Domain 'mycloudhosting.de' heißen soll. Entsprechend passen Sie natürlich die Kommandos hinsichtlich Domain und auch DocumentRoot (home Pfad) der Domain an.
Wir haben für die möglichst einfache Installation der Let's Encrypt Zertifikate ein Script geschrieben, dass Ihnen über einen einfachen Aufruf die Möglichkeit gibt ein solches Zertifikat z.B. auch für mehrere Domainnamen und/oder den Mailserver zu erstellen.
Das Syntax-Schema dieses Scriptes sieht wie folgt aus (immer in einer Zeile auf der SSH Console!):
sudo install_le_cert -d 'domainname.tld' -p '/full/path/to/documentroot/of/given/domainname.tld'[-w]
Der Schalter -d ist für den Domainnamen des Zertifikat nötig. Dieser Schalter kann mehrfach genutzt werden, um mehrere Domains oder auch verschiedene Subdomains in das Zertifikat einzutragen. Das sieht dann z.B. so aus:
sudo install_le_cert -d 'mycloudhosting.de' ...
oder
sudo install_le_cert -d 'mycloudhosting.de' -d 'www.mycloudhosting.de' ...
oder
sudo install_le_cert -d 'mycloudhosting.de' -d 'www.mycloudhosting.de' -d 'yourcloudhosting.de' -d 'www.yourcloudhosting.de' ...
Einzige Bedingung ist, dass alle diese Domains in einem VirtualHost liegen und damit auf ein DocumentRoot verweisen. Das DocumentRoot muss mit dem Schalter -p angegeben werden. Dieser Schalter darf nur einmal angegeben werden. Ein beispielhafter Aufruf nach obigem Schema sieht also wie folgt aus:
sudo install_le_cert -d 'mycloudhosting.de' -d 'www.mycloudhosting.de' -p '/usr/local/www/apache24/noexec/mycloudhosting.de' -w
Der letzte und optionale Schalter ist -w (ohne eckige Klammern benutzen!) und benötigt keinen Wert oder Text dahinter. Dieser Schalter muss für jede 'normale' Domain setzt werden und bedeutet 'web-only'. Wird dieser Schalter weggelassen, so wird das Zertifikat für die Domain erstellt und zusätzlich auch für den Mailserver eingerichtet. Für gewöhnlich sollte der Schalter nicht weggelassen werden, da der Mailserver bereits mit einem korrekten Zertifikat für den Servernamen vorinstalliert ist.
Falls Sie ein Zertifikat für eine Domain ohne -w (also für Web- und Mailidienste) einrichten, müssen Sie als root in der /etc/crontab den cronjob für die bisherige Domain des Mailservers (default der administrative Domainname des Servers) mit einem '-w' erweitern.
Ist obiges Kommando erfolgreich, so werden der Webserver und evtl. die Maildienste neu gestartet.
Sollte ein Fehler aufgetreten sein, empfehlen wir als ersten Versuch das Kommando schlicht erneut auszuführen, da manchmal die Server von letsencrypt schlicht überfordert sind.
Ein weiteres Problem könnten mod_rewrite rules Ihrer Anwendungen verursachen - dann ist folgender Eintrag als erste Rewrite Regel die Lösung
RewriteRule "^\/?\.well-known/acme-challenge" - [L]
Anpassen der Webserver Konfiguration
Im dritten Schritt sorgen wir dafür, dass die vom vorherigen Kommando erstellten Zertifikatsdateien auch vom Apache Webserver genutzt werden können.
Hierfür muss ein weiterer VirtualHost für die Domain in der Datei /etc/apache24/httpd.conf angelegt werden. Dieser VirtualHost hat zusätzlich die Informationen der Zertifikate als Inhalt und wird mit Port 443 statt Port 80 angelegt.
Haben Sie in Ihrem VirtualHost der jeweiligen Domain noch manuelle, zusätzliche Einträge, so sollten diese meist auch in den VirtualHost für Port 443 eingesetzt werden, damit auch hier die entsprechenden Werte wie beim bestehenden VirtualHost genutzt werden können.
Am einfachsten editieren Sie '/etc/apache24/httpd.conf' auf der SSH Konsole mit pico - einem einfachen, leichten Texteditor:
pico -w /etc/apache24/httpd.conf
Hier suchen Sie nach dem VirtualHost der Domain - in unserem Fall finden Sie diesen Abschnitt (Nicht vergessen, dabei Ihre Pfade und IP zu benutzen!):
<VirtualHost 83.138.82.229:80>
ServerAdmin webmaster@mycloudhosting.de
DocumentRoot /usr/local/www/apache24/noexec/mycloudhosting.de
ServerName www.mycloudhosting.de
ServerAlias mycloudhosting.de www.mycloudhosting.de
CustomLog /home/web/log/access_log_mycloudhosting.de combined
#POP:10
#FOR:10
#AUT:10
#QUOT:100000
#CUSTOM_TAG:
</VirtualHost>
Die letzten Zeilen, die mit einem Kommentarzeichen # beginnen, brauchen nicht in den neuen VirtualHost übernommen werden.
Wichtig ist: der VirtualHost für Port 443 muss in der httpd.conf vor(!) dem bestehenden VirtualHost mit Port 80 eingefügt werden, damit easyTECC diese SSL Einstellungen korrekt verarbeiten kann.
Vor dem gefundenen VirtualHost unserer Domain erstellen wir jetzt folgenden VirtualHost - wir haben hier die Unterschiede durch fette Buchstaben hervorgehoben:
<IfModule ssl_module>
<VirtualHost 83.138.82.229:443>
ServerAdmin webmaster@mycloudhosting.de
DocumentRoot /usr/local/www/apache24/noexec/mycloudhosting.de
ServerName www.mycloudhosting.de
ServerAlias mycloudhosting.de www.mycloudhosting.de
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/mycloudhosting.de/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/mycloudhosting.de/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/mycloudhosting.de/chain.pem
Header always set Strict-Transport-Security "max-age=15768000"
<Files ~ "\.(cgi|shtml|pl|php|php3|php4)$">
SSLOptions +StdEnvVars
</Files>
CustomLog /home/web/log/access_log_mycloudhosting.de combined
</VirtualHost>
</IfModule>
Hier im VirtualHost verweisen wir immer auf diesen Pfad: /etc/letsencrypt/live/mycloudhosting.de Wenn Sie sich diesen Ordner und seine Inhalte anschauen, so verweisen die Dateien auf andere Ordner, in denen sich die tatsächlichen Dateien befinden. Damit eine automatische Erneuerung der Zertifikate (siehe weiter unten) funktionieren kann, darf dies nicht geändert werden.
Neustart des Webservers mit SSL
Mit dem folgenden Kommando starten Sie den Webserver neu, damit wir den Zugriff auf die Domain per https Protokoll testen können:
sudo service apache24 restart
Ab sofort ist die Domain mit SSL erreichbar: https://www.mycloudhosting.de - in der URL Leiste des Browsers kann man bei eigentlich allen Browsern auf Symbole wie ein Schloss etc. klicken, um sich weitere Informationen zum Zertifikat anzeigen zu lassen. Im Chrome Browser sieht dies z.B. so aus:
Auch eine Prüfung bei ssllabs liefert beste Ergebnisse:
Auto-Renew des Zertifikates per cron
Eine der wesentlichen Einschränkungen der Let's Encrypt Zertifikate ist die sehr kurze 'Haltbarkeit' von nur 90 Tagen. Im Gegensatz zu den sonst üblichen 365 Tagen eines kommerziellen SSL Zertifikates mit Domainvalidierung ist dies sehr kurz. Deshalb ist es natürlich extrem interessant, hier möglichst einen automatischen Weg für die Erneuerung des Zertifikates zu haben.
Wir haben deshalb das oben genannte Script 'install_le_cert' bereits so gebaut, dass jedes mal die benötigen Einträge automatisch im Crondienst eingetragen werden. Sie brauchen sich also nicht um die Erneuerung zu kümmern. Dies macht der Server automatisch.
Sie brauchen Hilfe?
0421 4089-000