Nerdkrams
OpenSSL unter Free­BSD durch LibreSSL ersetzen

(Vor­be­mer­kung: Dies ist nur eine kur­ze Anlei­tung, bei­na­he nur für eige­ne Zwecke; wenn sie für jeman­den von euch von Inter­es­se ist, ist das aller­dings erfreulich.)

Dass das histo­risch gewach­se­ne OpenSSL vom Open­BSD-Team mit LibreSSL eine ent­rüm­pel­te Alter­na­ti­ve bekom­men hat, die nicht nur weni­ger Feh­ler, son­dern auch mehr Funk­tio­nen mit­bringt, haben die Medi­en, dar­un­ter hei­se online, ja bereits vor eini­ger Zeit ver­brei­tet. Am ver­gan­ge­nen Frei­tag ist Ver­si­on 2.0.0 erschie­nen, die erst­mals offi­zi­ell auch ande­re Betriebs­sy­ste­me als Open­BSD, dar­un­ter Free­BSD und Linux, unter­stützt. Für einen Ser­ver­be­trei­ber 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 Free­BSD-Ser­vern bevor­zugt mit Ports und dem Werk­zeug port­ma­ster arbei­te, beschränkt sich die­ser Aus­tausch 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 Biblio­thek ver­traut gemacht wer­den, indem man sie neu kompiliert.

Vor­aus­set­zung für das Fol­gen­de sind ein aktu­el­ler Ports-Tree (ports­nap fetch update) sowie das port­ma­ster-Werk­zeug. 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

Soll­ten wäh­rend­des­sen Feh­ler auf­tre­ten, weil zum Bei­spiel benö­tig­te Com­pi­ler 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

Eigent­lich kann damit nichts schief­ge­hen. Über­prü­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 Pfad­an­ga­ben 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.