radicales Crypto härten

radicale ist ein Server für CardDAV und CalDAV. [0]
In der default-Konfiguration [1] nutzt radicale keine verschlüsselte Verbindung. Das geht besser.

Eine Anleitung zur Installation von radicale findet sich hier. [6]

/This guide is security critical. See [6] // Diese Anleitung ist sicherheitskritisch. Siehe [6]/

ToC

Noch kein aktuelles OpenSSL installiert?

Das brauchen wir später, um stärke Cipher nutzen zu können.
Hier setze ich toast voraus [2]. Wenn schon ein neueres OpenSSL installiert ist als das hier von mir vorgeschlagene, kann mit dem nächsten Punkt weitergemacht werden. Die Version kann mit

openssl version

geprüft werden. Bitte bei openssl nach der aktuellesten Version schauen, dann etwa:

toast arm https://www.openssl.org/source/openssl-1.0.2q.tar.gz && openssl version

Hier sollte nun z.B. "OpenSSL 1.0.2q 20 Nov 2018" ausgegeben werden.

neuestes TLS-Protokoll nutzen

Dafür müssen wir erst sicher gehen, dass radicale mindestens python2.7.9 nutzt [3]. Da Uberspace python3 mitbringt und radicale es auch unterstützt, nehmen wir einfach das.

Ich habe radicale.py nach ~/bin/ und die config nach ~/etc/radicale/ gelegt. Bitte adaptieren wie nötig:

Die Zeile in daemontools run sollte also python3 nutzen und also etwa so aussehen:

exec python3.6 -m radicale -D --config ~/etc/radicale/config  2>&1

Dann setzen wir noch ein aktuelles Protokoll in der config:

sed -i -e 's/protocol\ =\ .*/protocol\ =\ PROTOCOL_TLSv1_2/' ~/etc/radicale/config

stärkere Cipher nutzen

Die genutzte Liste entnehme ich Mozillas Empfehlung moderner cipher [7] minus ECDSA. Auch hier bitte zuvor auf Aktualität prüfen:

MOZILLA_CIPHERS='ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256'

CIPHERS=$( openssl ciphers "${MOZILLA_CIPHERS}" ) \
&& sed -i -e "s/ciphers\ =\ .*/ciphers\ =\ "$CIPHERS"/" ~/etc/radicale/config
grep 'ciphers = ' ~/etc/radicale/config

Das kurze Skript sollte am Ende die gefundenen unterstützten Cipher ausgeben, die nun eingetragen wurden. Das sollte etwa so aussehen:

ciphers = ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256

auf Zertifikat und Key verweisen.

Das macht ihr in der config mit "certificate" und "key". Noch kein Zertifikat? Tipps hier: [4]

HTTPS aktivieren

sed -i -e 's/ssl\ =.*/ssl\ =\ True/' ~/etc/radicale/config ; grep 'ssl = ' ~/etc/radicale/config

Jetzt noch den Dienst neustarten!


Siehe auch:

  • frank.zisko.io: HTTPS per Apache-Proxy [5]