Nerdkrams
OpenSSL unter FreeBSD durch LibreSSL ersetzen

(Vorbemerkung: Dies ist nur eine kur­ze Anleitung, bei­na­he nur für eige­ne Zwecke; wenn sie für jeman­den von euch von Interesse ist, ist das aller­dings erfreulich.)

Dass das histo­risch gewach­se­ne OpenSSL vom OpenBSD-Team mit LibreSSL eine ent­rüm­pel­te Alternative bekom­men hat, die nicht nur weni­ger Fehler, son­dern auch mehr Funktionen mit­bringt, haben die Medien, dar­un­ter hei­se online, ja bereits vor eini­ger Zeit ver­brei­tet. Am ver­gan­ge­nen Freitag ist Version 2.0.0 erschie­nen, die erst­mals offi­zi­ell auch ande­re Betriebssysteme als OpenBSD, dar­un­ter FreeBSD und Linux, unter­stützt. Für einen Serverbetreiber wie mich ist das natür­lich ein will­kom­me­ner Anlass, das mir doch mitt­ler­wei­le ziem­lich suspek­te OpenSSL auszutauschen.

Da ich auf FreeBSD-Servern bevor­zugt mit Ports und dem Werkzeug port­ma­ster arbei­te, beschränkt sich die­ser Austausch nicht dar­auf, LibreSSL zu instal­lie­ren; auch alle Ports, die bis­lang OpenSSL ver­wen­de­ten, müs­sen mit der neu­en Bibliothek ver­traut gemacht wer­den, indem man sie neu kompiliert.

Voraussetzung für das Folgende sind ein aktu­el­ler Ports-Tree (ports­nap fetch update) sowie das port­ma­ster-Werkzeug. Mit die­sem geht das ziem­lich ein­fach. Da vie­le Ports nur nach openssl suchen, müs­sen wir dem System bei­brin­gen, dass es die­sen Port unter security/libressl fin­den kann (wir gau­keln ihm also vor, der Port von LibreSSL sei OpenSSL):

portmaster -o security/libressl security/openssl

Anschließend kön­nen „OpenSSL“ (also LibreSSL) und alle Ports, die es benut­zen, auto­ma­tisch neu erstellt werden:

portmaster -r libressl

Sollten wäh­rend­des­sen Fehler auf­tre­ten, weil zum Beispiel benö­tig­te Compiler nicht recht­zei­tig neu erstellt wer­den, so kann dies vor­ge­zo­gen wer­den; 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 schief­ge­hen. Überprüfen könnt ihr den Erfolg mit dem Befehl openssl ver­si­on. Zeigt die­ser noch immer das nor­ma­le OpenSSL an, so liegt dies viel­leicht an unter­schied­li­chen Pfadangaben von Open- und LibreSSL. Das ist ein lös­ba­res Problem:

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

Das soll­te es gewe­sen sein.