2018年10月18日木曜日

【備忘録】LibreSSL 2.8.1 + Postfix 3.3.1 + nginx 1.15.5 へのアップグレード

以前にアップグレードしましたが、忘れないうちに備忘録として残しておきます。
以下、ソースからコンパイルしてインストールする場合の備忘録になります。

LibreSSL のアップグレード


LibreSSLを組み込んでいる nginx, postfix は、libreSSLをアップデートしても影響は受けません。逆を言えば、LibreSSLをアップデートした場合には、nginx, postfix を再度コンパイルし直す必要があるということです。

./configure 
make 
sudo make install
sudo ldconfig

でインストールできます。

openssl version
LibreSSL 2.8.1

となるでしょう。

NGINX に LibreSSL を組み込んでアップグレード


ここでやったようなおまじないを libressl ソース側でしておく必要があります。

/usr/local/src/nginx-1.15.5
/usr/local/src/libressl-2.8.1

でそれぞれソースを展開していたと仮定します。

./configure 
... 
... 
--with-openssl=../../libressl-2.8.1  \
--with-ld-opt="-lrt" 

touch ../../libressl/libressl-2.8.1/.openssl/include/openssl/ssl.h

make

のように、--with-openssl で libressl のソース場所を指定します。
libressl はすでに make install までは完了しているものとします。

そして本当に組み込まれているかを

  • /usr/local/src/nginx-1.15.5/objs/nginx -V 

の出力結果にある、
built with LibreSSL 2.8.1
でもってチェックしてください。

あとは、置き換えるだけです。いろいろありますが、
/usr/local/nginx 以下に nginx があるように /etc/init.d/nginx 等を設定しているので、

/etc/nginx 等 nginx の設定群は念の為バックアップした上で、

sudo/etc/init.d/nginx stop
sudo rm /usr/local/nginx
sudo ln -s /usr/local/nginx-1.15.5  /usr/local/nginx
sudo /etc/init.d/nginx start
のような形で置き換えます。これなら、前のバージョンに戻すことも簡単です。

POSTFIX に LibreSSL を組み込んでアップグレード


ここにあるようなおまじないを posfix ソースにします。
これは OpenSSL が前提で、そのバージョンによって#ifdef している postfix ソースをごまかすためです。

make makefiles CCARGS="-DUSE_TLS -I/usr/local/include"  AUXLIBS="-L/usr/local/lib -lssl -lcrypto -lz -ldl"
make

とした上で、

ldd src/postfix/postfix | grep ssl 
libssl.so.46 => /usr/local/lib/libssl.so.46

のように、libressl 2.8.1 のライブラリが読み込まれていることを確認します。
これが libressl 2.8.1 かどうかは、そのソースにある
/usr/local/src/libressl-2.8.1/ssl/.libs/libssl.so.46
と同じかどうかで分かります。

/etc/postfix 等 postfix の設定群は念の為バックアップした上で

sudo make upgrade
sudo /etc/init.d/postfix restart

いつもと同じ感じですが、変わらないよっていう備忘録も残す価値はあるかなということで残しておきます。

2018年10月18日 @kimipooh