|
|
(24 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt) |
Zeile 21: |
Zeile 21: |
| === Grundsätzliche Schritte um ein TLS / SSL Zertifikat zu bekommen === | | === Grundsätzliche Schritte um ein TLS / SSL Zertifikat zu bekommen === |
|
| |
|
| # es muss eine example.com.key Datei erzeugt werden | | # es muss je aufgeschaltet (sub)Domain ein Zertifikat bereit gestellt werden |
| | # es muss je eine example.com.key Datei erzeugt werden |
| # mit der example.com.key Datei wird die example.com.csr erstellt | | # mit der example.com.key Datei wird die example.com.csr erstellt |
| # Die example.com.csr wird an die Zertifizierungstelle gesendet | | # Die example.com.csr wird an die Zertifizierungstelle gesendet |
Zeile 33: |
Zeile 34: |
|
| |
|
| Möchte man, dass eine eigene Domain ohne Fehlermeldungen per SSL erreichbar ist, benötigt man ein eigenes Zertifikat von einer Zertifizierungsstelle, die von den Browsern standardmäßig anerkannt wird. | | Möchte man, dass eine eigene Domain ohne Fehlermeldungen per SSL erreichbar ist, benötigt man ein eigenes Zertifikat von einer Zertifizierungsstelle, die von den Browsern standardmäßig anerkannt wird. |
|
| |
| Zudem benötigt man eine eigene IP-Nummer, da dies die Voraussetzung zur Nutzung von ssl-Verschlüsselung ist.
| |
|
| |
|
| Zunächst muss man als Paket-Admin einen Private Key erzeugen und dann einen CSR (Certificate Signing Request - mit dem Private Key erzeugte Anforderung für ein Zertifikat). Wie das genau funktioniert, ist meistens von Seiten der Zertifizierungsstelle beschrieben. | | Zunächst muss man als Paket-Admin einen Private Key erzeugen und dann einen CSR (Certificate Signing Request - mit dem Private Key erzeugte Anforderung für ein Zertifikat). Wie das genau funktioniert, ist meistens von Seiten der Zertifizierungsstelle beschrieben. |
Zeile 67: |
Zeile 66: |
| ''' Per Auftrag an service@ muss um Aktivierung des neuen Zertifikats gebeten werden. ''' | | ''' Per Auftrag an service@ muss um Aktivierung des neuen Zertifikats gebeten werden. ''' |
|
| |
|
| === Kostenlose SSL-Zertifikate von StartSSL ===
| | == Kostenlose Let's Encrypt Zertifikate == |
| | |
| Heise hat unter der URL
| |
| http://www.heise.de/security/artikel/Die-Praxis-881280.html
| |
| den Vorgang dokumentiert, wie man ein Zertifikat erhält,
| |
| das von StartSSL ausgestellt wurde und somit im Browser auch keine Warnmeldung verursacht.
| |
| | |
| Mit den Zeilen
| |
| | |
| <pre><nowiki>
| |
| $> openssl genrsa -out example.com.key 2048
| |
| $> openssl req -new -key example.com.key -out example.com.csr
| |
| ...
| |
| </nowiki></pre>
| |
| | |
| erstellt man sich ein Certificate Signing Request (CSR).
| |
| | |
| Wenn man dann auf https://www.startssl.com/ die "Express Lane" benutzt (privates Zertifikat erzeugen, im Browser installieren, einloggen, Zertifikat anfragen -> "Skip" beim erzeugen -> CSR in Formular kopieren) bekommt man am Ende zwei Dateien:
| |
| | |
| <pre><nowiki>
| |
| sub.class1.server.ca.pem
| |
| ca.pem
| |
| </nowiki></pre>
| |
| | |
| sowie das Zertifikat zum Kopieren/Einfügen in eine Datei <b>ssl.crt</b>.
| |
| | |
| Dieses Zertifikat und der private Schlüssel müssen in einer Datei zusammengefasst werden;
| |
| gleichzeitig sollte der Erfolg der Aktion mit <b>openssl</b> überprüft werden:
| |
| | |
| <pre><nowiki>
| |
| $> cat example.com.key ssl.crt > ~/etc/https.pem
| |
| $> openssl s_server -cert https.pem -www
| |
| Using default temp DH parameters
| |
| Using default temp ECDH parameters
| |
| ACCEPT
| |
| ^C
| |
| $>
| |
| </nowiki></pre>
| |
| | |
| Außerdem muss die Datei '''sub.class1.server.ca.pem''' per SFTP nach ~/etc/ hochgeladen werden.
| |
| | |
| ''' Per Auftrag an service@ muss um Aktivierung des neuen Zertifikats example.com.crt, example.com.key und ggf die example.com.chain oder sub.class1.server.ca.pem gebeten werden. '''
| |
| | |
| Hier kann man das Zertifikat nach der Aktivierung testen:
| |
| | |
| <pre>
| |
| http://www.digicert.com/help/
| |
| </pre>
| |
| | |
| === Automatisierte SSL-Zertifikate von Let’s Encrypt ===
| |
| | |
| Auf Github findet man die Buildout-Konfiguration für den Certbot, einen Installer / Updater für Let's Encrypt Zertifikate "userland-certbot". Mithilfe dieses Projekts von Michael Hierweck und Veit Schiele lassen sich
| |
| tatsächlich automatisiert Let's encrypt Zertifikate automatisiert installieren und erneuern. Hier wird beschrieben, wie man diese Konfiguration in einer Hostsharing-Umgebung einsetzen kann.
| |
| Dazu wird im Home-Verzeichnis des Domain-Admin eine virtuelle Python-Umgebung mit virtualenv erzeugt. In der Umgebung wird Buildout installiert und mit buildout lässt sich der Certbot installieren.
| |
| <pre>
| |
| xyz00-doms@myhive:~$ virtualenv certbot
| |
| Running virtualenv with interpreter /usr/bin/python2
| |
| New python executable in certbot/bin/python2
| |
| Also creating executable in certbot/bin/python
| |
| Installing setuptools, pip...done.
| |
| | |
| xyz00-doms@myhive:~$ cd certbot/
| |
| xyz00-doms@myhive:~/certbot$ . bin/activate
| |
| (certbot)xyz00-doms@myhive:~/certbot$
| |
| (certbot)xyz00-doms@myhive:~/certbot$ pip install zc.buildout
| |
| Downloading/unpacking zc.buildout
| |
| Downloading zc.buildout-2.5.2-py2.py3-none-any.whl (262kB): 262kB downloaded
| |
| Downloading/unpacking setuptools>=8.0 (from zc.buildout)
| |
| Downloading setuptools-25.2.0-py2.py3-none-any.whl (442kB): 442kB downloaded
| |
| Installing collected packages: zc.buildout, setuptools
| |
| Found existing installation: setuptools 5.5.1
| |
| Uninstalling setuptools:
| |
| Successfully uninstalled setuptools
| |
| Successfully installed zc.buildout setuptools
| |
| Cleaning up...
| |
| | |
| (certbot)xyz00-doms@myhive:~/certbot$ git clone https://github.com/veit/userland-certbot.git
| |
| Cloning into 'userland-certbot'...
| |
| remote: Counting objects: 55, done.
| |
| remote: Total 55 (delta 0), reused 0 (delta 0), pack-reused 55
| |
| Unpacking objects: 100% (55/55), done.
| |
| Checking connectivity... done.
| |
| | |
| (certbot)xyz00-doms@myhive:~/certbot$ cd userland-certbot/
| |
| (certbot)xyz00-doms@myhive:~/certbot/userland-certbot$ buildout
| |
| Creating directory '/home/pacs/xyz00/users/doms/certbot/userland-certbot/bin'.
| |
| Creating directory '/home/pacs/xyz00/users/doms/certbot/userland-certbot/parts'.
| |
| Creating directory '/home/pacs/xyz00/users/doms/certbot/userland-certbot/develop-eggs'.
| |
| Installing certbot.
| |
| Generated script '/home/pacs/xyz00/users/doms/certbot/userland-certbot/bin/certbot'.
| |
| Installing certbot-directories.
| |
| certbot-directories: created path: /home/pacs/xyz00/users/doms/certbot/userland-certbot/parts/certbot
| |
| certbot-directories: created path: /home/pacs/xyz00/users/doms/certbot/userland-certbot/parts/certbot/bin
| |
| certbot-directories: created path: /home/pacs/xyz00/users/doms/certbot/userland-certbot/parts/certbot/etc
| |
| certbot-directories: created path: /home/pacs/xyz00/users/doms/certbot/userland-certbot/parts/certbot/lib
| |
| certbot-directories: created path: /home/pacs/xyz00/users/doms/certbot/userland-certbot/parts/certbot/log
| |
| certbot-directories: created path: /home/pacs/xyz00/users/doms/certbot/userland-certbot/parts/certbot/web
| |
| Installing certbot-runner.
| |
| Installing certbot-crontab.
| |
| </pre>
| |
| | |
| Der Certbot legt eine geheime Datei im Verzeichnis /home/pacs/xyz00/users/pronto/certbot/userland-certbot/parts/certbot/web/.well-known ab, die Let's Encrypt über den Webserver erreichen muss, um sicherzustellen,
| |
| dass Domain-Admin berechtigt ist, ein Zertifikat für die Domain zu erstellen. Im Hier dokumentierten Fall wird das Standard-Setup bei Hostsharing, also der vorinstallierte Apache als Webserver genutzt.
| |
| Dazu wird ein Symlink zum obengenannten Verzeichnis im Apache Webverzeichnis angelegt. (Evtl. muss das Verzeichnis .well-known vorher angelegt werden.)
| |
| | |
| <pre>
| |
| (certbot)xyz00-doms@myhive:~/certbot/userland-certbot$ cd ~/doms/example.org/subs/www/
| |
| (certbot)xyz00-doms@myhive:~/doms/example.org/subs/www$ mkdir ~/certbot/userland-certbot/parts/certbot/web/.well-known
| |
| (certbot)xyz00-doms@myhive:~/doms/example.org/subs/www$ ln -s ~/certbot/userland-certbot/parts/certbot/web/.well-known .well-known
| |
| </pre>
| |
| | |
| Als nächstes muss man sich bei Let's Encrypt registrieren. Dabei wird ein Let's Encrypt Konto erzeugt, dass die angegebene Email-Adresse mit der Certbot-Installation in Relation setzt.
| |
| Die KontoInformationen werden im Verzeichnis /home/pacs/xyz00/users/doms/certbot/userland-certbot/parts/certbot/etc gespeichert und es wir empfohlen diese Daten zu sichern.
| |
| das Zertifikat wird folgendermaßen erzeugt:
| |
| | |
| <pre>
| |
| (certbot)xyz00-doms@myhive:~/certbot/userland-certbot$ bin/certbot-runner certonly -d example.org -d www.example.org
| |
| 2016-08-16 14:12:19,526:WARNING:certbot.client:Non-standard path(s), might not work with crontab installed by your operating system package manager
| |
| | |
| IMPORTANT NOTES:
| |
| - Congratulations! Your certificate and chain have been saved at
| |
| /home/pacs/xyz00/users/doms/certbot/userland-certbot/parts/certbot/etc/live/example.org/fullchain.pem.
| |
| Your cert will expire on 2016-11-14. To obtain a new or tweaked
| |
| version of this certificate in the future, simply run certbot
| |
| again. To non-interactively renew *all* of your certificates, run
| |
| "certbot renew"
| |
| - If you like Certbot, please consider supporting our work by:
| |
| | |
| Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
| |
| Donating to EFF: https://eff.org/donate-le
| |
| | |
| </pre>
| |
| | |
| Nun ist es so, dass Zertifikate bei Hostsharing durch eine E-Mail an service@hostsharing.net aktiviert werden. Dieser Vorgang muss zur Zeit noch "per Hand" initiert werden.
| |
| Außerdem wird von Hostsharing erwartet, einer gewisse Namenskonvention bei der Benennung der Zertifikate und Schlüssel zu folgen. Deshalb Kopiert man die Symlinks ins Verzeichnis etc der Domain und bennent die Endungen entsprechend um.
| |
| | |
| <pre>
| |
| (certbot)xyz00-doms@myhive:~/doms/example.org/etc$ cp ~/certbot/userland-certbot/parts/certbot/etc/live/example.org/cert.pem cert.crt
| |
| (certbot)xyz00-doms@myhive:~/doms/example.org/etc$ cp ~/certbot/userland-certbot/parts/certbot/etc/live/example.org/chain.pem chain.pem
| |
| (certbot)xyz00-doms@myhive:~/doms/example.org/etc$ cp ~/certbot/userland-certbot/parts/certbot/etc/live/example.org/fullchain.pem fullchain.chain
| |
| (certbot)xyz00-doms@myhive:~/doms/example.org/etc$ cp ~/certbot/userland-certbot/parts/certbot/etc/live/example.org/privkey.pem privkey.key
| |
| </pre>
| |
| | |
| und schickt eine Mail mit der Bitte um Aktivierung des Zertifikats unter Angabe des Verzeichnisses ~/doms/example.org/etc an service@hostsharing.net.
| |
| | |
| Buildout ist so konfiguriert, dass ein Cronjob zur Zertifikatserneuerung angelegt wird, der täglich ausgeführt wird. Vor Ablauf des Zertifikats wird ein neues Zertifikat erstellt und ersetzt das alte. Außerdem wird eine Mail an die registrierte Adresse gesendet. Theoretisch sollte man diese Mail an service weiterleiten können, um das erneuerte Zertifikat ersetzen zu können.
| |
| | |
|
| |
|
| ----
| | Es gibt kostenlose Zertifikate von Let's Encrypt. Davon handelt der eigene Artikel [[TLS mit Let's Encrypt Zertifikat]]. |
| [[Kategorie:HSDoku]] | |
| [[Kategorie:WWW]]
| |
| [[Kategorie:Glossar]]
| |
SSL wird zu TLS
Transport Layer Security (TLS) ist eine Weiterentwicklung des Secure Socket Layers (SSL) durch die Internet Engineering Task Force (IETF), die das SSL-Protokoll 1999 in Transport Layer Security umbenannte. Der aktuelle Standard ist in RFC 5246 beschrieben und ist von 2008.
Standardkonfiguration
Neu aufgeschaltete Domains haben standardmäßig für die Verzeichnisse htdocs, subs, cgi und fastcgi getrennte *-ssl Ordner. Damit sind SSL-Inhalte sauber und sicher von Nicht-SSL Inhalten getrennt.
Bei Domains, die schon vor der Einführung des SSL Features bestanden, sind die Verzeichnisse 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 nun sauber trennen möchte oder ganz andere Inhalte anbieten möchte kann die Symlinks löschen und durch Verzeichnisse ersetzen. Bei der Paketdomain ist dabei zu beachten, dass die Rechte neu angelegter Verzeichnisse noch anzupassen sind, wenn die SSL Verzeichnisse nicht für alle User zugänglich sein sollen.
Wer hingegen SSL und Nicht-SSL Seiten innerhalb eines Verzeichnisbaums verwalten möchte, kann umgekehrt die SSL Verzeichnisse löschen und (ggf. auch nur selektiv für einige Unterverzeichnisse) Symlinks auf die Nicht-SSL Verzeichnisse anlegen.
Die Symlinks erlauben es die Seiten sowohl mit als auch ohne SSL abzurufen. Konfigurations- bzw. Administrationsseiten z.B. lassen sich dadurch sehr einfach manuell auch per https:// erreichen.
Möchte man den Zugriff auf bestimmte Seiten nur mit SSL erlauben und automatisch auf SSL umschalten, muss dies noch durch entsprechende .htaccess Dateien für die betroffenen Verzeichnisse konfiguriert werden.
Eigene SSL Zertifikate
Grundsätzliche Schritte um ein TLS / SSL Zertifikat zu bekommen
- es muss je aufgeschaltet (sub)Domain ein Zertifikat bereit gestellt werden
- es muss je eine example.com.key Datei erzeugt werden
- mit der example.com.key Datei wird die example.com.csr erstellt
- Die example.com.csr wird an die Zertifizierungstelle gesendet
- zurück bekommt man
- eine example.com.crt Datei
- ggf eine example.com.chain oder sub.class1.server.ca.pem Datei
- die example.com.crt, example.com.key und ggf die example.com.chain oder sub.class1.server.ca.pem Datei werden ins Paket ~/etc Verzeichnis kopiert
- zur Aktivierung info an service@hostsharing.net senden
per script Zertifikat erstellen
Möchte man, dass eine eigene Domain ohne Fehlermeldungen per SSL erreichbar ist, benötigt man ein eigenes Zertifikat von einer Zertifizierungsstelle, die von den Browsern standardmäßig anerkannt wird.
Zunächst muss man als Paket-Admin einen Private Key erzeugen und dann einen CSR (Certificate Signing Request - mit dem Private Key erzeugte Anforderung für ein Zertifikat). 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.
Per Auftrag an service@ muss um Aktivierung des neuen Zertifikats gebeten werden.
Kostenlose Let's Encrypt Zertifikate
Es gibt kostenlose Zertifikate von Let's Encrypt. Davon handelt der eigene Artikel TLS mit Let's Encrypt Zertifikat.