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.

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

Hier sollte nun "OpenSSL 1.0.2d 9 Jul 2015" 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 ~/bin/radicale.py -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

An dieser Stelle wäre es schön, wenn wir Cipher für PFS nutzen könnten. Das ist ohne einen Eingriff in radicale selbst wohl aber nicht möglich. Wir könnten die verschiedenen Diffie-Hellman-Ciphers auch einfach mit in die Liste nehmen, es würde an dieser Stelle aber nichts anderes bewirken, als jede Client-Server Kommunikation zu verlangsamen. Deshalb entscheide ich mich hier dafür, nur auf die nächststärkeren Cipher zurückzugreifen:

CIPHERS=$(openssl ciphers -tls1 '!DHE:!EDH:!DH:!ECDHE:!EECDH:!ECDH:!SRP:!PSK:HIGH+AES256') \
&& 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 = AES256-GCM-SHA384:AES256-SHA256:AES256-SHA

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]