Nerdkrams
OpenSSL unter FreeBSD durch LibreSSL ersetzen

(Vorbemerkung: Dies ist nur eine kurze Anleitung, beinahe nur für eigene Zwecke; wenn sie für jemanden von euch von Interesse ist, ist das allerdings erfreulich.)

Dass das historisch gewachsene OpenSSL vom OpenBSD-Team mit LibreSSL eine entrümpelte Alternative bekommen hat, die nicht nur weniger Fehler, sondern auch mehr Funktionen mitbringt, haben die Medien, darunter heise online, ja bereits vor einiger Zeit verbreitet. Am vergangenen Freitag ist Version 2.0.0 erschienen, die erstmals offiziell auch andere Betriebssysteme als OpenBSD, darunter FreeBSD und Linux, unterstützt. Für einen Serverbetreiber wie mich ist das natürlich ein willkommener Anlass, das mir doch mittlerweile ziemlich suspekte OpenSSL auszutauschen.

Da ich auf FreeBSD-Servern bevorzugt mit Ports und dem Werkzeug portmaster arbeite, beschränkt sich dieser Austausch nicht darauf, LibreSSL zu installieren; auch alle Ports, die bislang OpenSSL verwendeten, müssen mit der neuen Bibliothek vertraut gemacht werden, indem man sie neu kompiliert.

Voraussetzung für das Folgende sind ein aktueller Ports-Tree (portsnap fetch update) sowie das portmaster-Werkzeug. Mit diesem geht das ziemlich einfach. Da viele Ports nur nach openssl suchen, müssen wir dem System beibringen, dass es diesen Port unter security/libressl finden kann (wir gaukeln ihm also vor, der Port von LibreSSL sei OpenSSL):

portmaster -o security/libressl security/openssl

Anschließend können „OpenSSL” (also LibreSSL) und alle Ports, die es benutzen, automatisch neu erstellt werden:

portmaster -r libressl

Sollten währenddessen Fehler auftreten, weil zum Beispiel benötigte Compiler nicht rechtzeitig neu erstellt werden, so kann dies vorgezogen werden; schlägt etwa cmake fehl, so genügt eine Neuinstallation:

cd /usr/ports/devel/cmake ; make reinstall clean
portmaster -r libressl

Eigentlich kann damit nichts schiefgehen. Überprüfen könnt ihr den Erfolg mit dem Befehl openssl version. Zeigt dieser noch immer das normale OpenSSL an, so liegt dies vielleicht an unterschiedlichen Pfadangaben von Open- und LibreSSL. Das ist ein lösbares Problem:

cd /usr/bin
mv openssl openssl.orig
ln -s /usr/local/bin/openssl

Das sollte es gewesen sein.