Server/Transport Layer Security
Die Server/Anwendungen (beim StuRa) sind seit 2016 einigermaßen ordentlich verschlüsselt verfügbar.
Geschichte
Sehr lange -bis 2016 - waren die Webservices gar nicht, oder nicht ordentlich verschlüsselt erreichbar.
Es fehlte dem StuRa ein X509-Zertifikat, dass auch in den Browsern verankert ist, um die Nutzerinnen nicht mit Warnungen zum Zertifikat abzuschrecken. Die Ausnahme war https://umfragen.stura.htw-dresden.de (Server/Umfragen).
- 2015
- PT hat Wolf gebeten das aufzunehmen
- RZ-Leiter wurde von Wolf und Norman angesprochen
- Warten auf Rückmeldung RZ
- 2016
- user:Bommix rockt!
- Das Zertifikat für umfragen.stura.htw-dresden.de läuft 2016-04 aus.
Quellen für taugliche Zertifikate
Rechenzentrum HTW Dresden als Quelle für taugliche Zertifikate
Möglich ist es für den Weg StuRa HTW Dresden (Bereich Administration Rechentechnik) -> HTW Dresden (Rechenzentrum HTW Dresden) -> DFN -> Telekom ordentliche Zertifikate zu bekommen. (Leider wird zur Beantragung eine verantwortliche Person benötigt, die das Zertifikat dann auch verlängert. Die Leitung vom RZ prüft beim DFN, ob Körperschaften gegebenenfalls auch andere Antragswege offen stehen.)
#Let's Encrypt als Quelle für taugliche Zertifikate
Let's Encrypt ist eine andere Möglichkeit (als Stelle mit Verfahren) für den StuRa ordentliche Zertifikate zu verwenden.
- Weblinks
Zweckmäßigkeit
- Ansonsten (ohne Verschlüsselung) müssen Nutzerinnen und Nutzer berechtigt der Server/Anwendung bei der Verwendung ihres Passwortes misstrauen.
- Der Bereich Datenkultur hat selbstverständlich den Anspruch, dass möglichst jede Kommunikation verschlüsselt sein soll.
Let's Encrypt
Aufgrund der schwierigen Implementierung der Zertifikate über das Rechnenzentrum wurde 2016-04 von Bommel auf Zertifikate von Let's Encrypt gesetzt. Hier die Anleitung. Alle Server/Seiten, welche nun dieses neue Zertifikat von Let's Encrypt besitzen haben einen automatische Aktivierung der Verschlüsselung(header redirect to ssl).
Installation für Let's Encrypt bei FreeBSD
- i.V.m. Apache als Webbrowser
pkg install -y letsencrypt.sh openssl
New packages to be INSTALLED: letsencrypt.sh: 0.1.0 openssl: 1.0.2_12
Message from letsencrypt.sh-0.1.0: To use this script you should copy the examples in /usr/local/etc/letsencrypt.sh/ and at least add a domain and a contact mail address. You should also copy the openssl.cnf.sample file in /usr/local/openssl so you won't get warnings about it missing. In order to run the script regularly to update the certificates add this line to /etc/periodic.conf weekly_letsencrypt_enable="YES" Additionally the following parameters can be added to /etc/periodic.conf To run the certification renenewal as a different user weekly_letsencrypt_user="_letsencrypt" To run a script after the renewal (as root) weekly_letsencrypt_deployscript="/usr/local/etc/letsencrypt.sh/deploy.sh" Message from openssl-1.0.2_12: Copy /usr/local/openssl/openssl.cnf.sample to /usr/local/openssl/openssl.cnf and edit it to fit your needs.
cp /usr/local/openssl/openssl.cnf.sample /usr/local/openssl/openssl.cnf
pw groupadd -n _letsencrypt -g 443
pw useradd -n _letsencrypt -u 443 -g 443 -d /usr/local/etc/letsencrypt.sh -w no -s /nonexistent
chown root:_letsencrypt /usr/local/etc/letsencrypt.sh
chmod 770 /usr/local/etc/letsencrypt.sh
mkdir -p -m 775 /usr/local/www/.well-known/acme-challenge
chgrp _letsencrypt /usr/local/www/.well-known/acme-challenge
$EDITOR /usr/local/etc/letsencrypt.sh/domains.txt
Es werden alle Hosts, getrennt durch ein Leerzeichen, eingetragen. Bei Zeilenumbruch wird ein weiteres zusätzliches Zertifikat erstellt.
$EDITOR /usr/local/etc/letsencrypt.sh/config.sh
BASEDIR="/usr/local/etc/letsencrypt.sh" WELLKNOWN="/usr/local/www/.well-known/acme-challenge" alias openssl='/usr/local/bin/openssl'
Für das automatische Aktualisieren:
$EDITOR /etc/periodic.conf
weekly_letsencrypt_enable="YES" weekly_letsencrypt_user="_letsencrypt" weekly_letsencrypt_deployscript="/usr/local/etc/letsencrypt.sh/deploy.sh"
- Apache24
$EDITOR /usr/local/etc/apache24/httpd.conf
<Directory "/usr/local/www/.well-known/"> Options None AllowOverride None Require all granted Header add Content-Type text/plain </Directory> Alias /.well-known/ /usr/local/www/.well-known/
<Directory "/">
Neustarten vom Webserver (hier Apache 2.4)
service apache24 restart
Und Jetzt ausprobieren:
cd /usr/local/etc/letsencrypt.sh
su -m _letsencrypt -c 'bash /usr/local/bin/letsencrypt.sh --cron'
# INFO: Using main config file /usr/local/etc/letsencrypt.sh/config.sh Processing fsr-et.htwdd.de with alternative names: www.fsr-et.htwdd.de + Signing domains... + Generating private key... + Generating signing request... + Requesting challenge for fsr-et.htwdd.de... + Requesting challenge for www.fsr-et.htwdd.de... + Responding to challenge for fsr-et.htwdd.de... + Challenge is valid! + Responding to challenge for www.fsr-et.htwdd.de... + Challenge is valid! + Requesting certificate... + Checking certificate... + Done! + Creating fullchain.pem... + Done!
Und freuen :D
Nun alle Zerts in die Konfiguration vom Webserver einbinden:
- Das kann in der zentralen Datei zur Konfiguration geschehen, aber auch an anderen (geeigneteren) Stellen.
$EDITOR /usr/local/etc/apache24/httpd.conf
SSLCertificateFile /usr/local/etc/letsencrypt.sh/certs/projekt.htw.stura-dresden.de/cert.pem SSLCertificateKeyFile /usr/local/etc/letsencrypt.sh/certs/projekt.htw.stura-dresden.de/privkey.pem SSLCertificateChainFile /usr/local/etc/letsencrypt.sh/certs/wiki.stura-dresden.de/chain.pem
Und damit nur SSL genommen wird:
$EDITOR /usr/local/etc/apache24/httpd.conf
- im Abschnitt für das ensprechende Directory
RewriteEngine ON RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
$EDITOR /usr/local/etc/apache24/Includes/ssl.conf
<VirtualHost *:443> DocumentRoot "/usr/local/www/wordpress" <Directory "/usr/local/www/wordpress"> AllowOverride All </Directory> ServerName 141.56.50.30:443 SSLEngine on SSLCertificateFile /usr/local/etc/letsencrypt.sh/certs/fsr-et.htwdd.de/cert.pem SSLCertificateKeyFile /usr/local/etc/letsencrypt.sh/certs/fsr-et.htwdd.de/privkey.pem SSLCertificateChainFile /usr/local/etc/letsencrypt.sh/certs/fsr-et.htwdd.de/chain.pem </VirtualHost>
- ggf. Listen 443 in der httpd.conf nachtragen
Installation für Let's Encrypt bei FreeBSD Siehe auch
- freebsd:BernardSpil/LetsEncrypt
- letsencrypt.readthedocs.io/en/latest/using.html#operating-system-packages
- letsencrypt.readthedocs.io/en/latest/using.html#plugins
Bekannte Probleme
Ab und an kann der Cronjob nicht ausgeführt werden. Dies könnte daran leigen, dass das let's encrypt Script geupdatet werden muss. Hier ein kleines Tutorial:
pkg update pkg upgrade -y cd /usr/local/etc/letsencrypt.sh/ mv certs certsalt su -m _letsencrypt -c 'bash /usr/local/bin/letsencrypt.sh --cron' service apache24 restart
Wie zu sehen ist habe ich die alten Zertifikate in Certalt gelegt. Falls es klappen sollte kann der Ordner certsalt auch gelöscht werden.
rmdir cd /usr/local/etc/letsencrypt.sh/certsalt
Vorschläge für die beste Lösung
Interessierte
- (PaulRiegel)
- (vv01f)
- Bommix