Nginx 1.13.4 with LibreSSL 2.4.3 --> Nginx 1.13.4 with Libre 2.5.5
過去の導入については下記を参考にしてみてください。
LibreSSLの更新
最新版をダウンロードして
tar -xzvf libssl-2.5.5.tar.gz
cd libressl-2.5.5
make ditclean
./configure
make
sudo make install
cd libressl-2.5.5
make ditclean
./configure
make
sudo make install
sudo ldconfig
なんかで普通にインストールできます。
※一点、 ldconfig してライブラリ更新しておかないと、postfix upgrade 時にエラー(後述)でアップグレードできないので注意。
標準では /usr/local/lib 以下に入ります。筆者は nginx と postfix で LibreSSLを使っています。
動作中の Postfix への影響なし
ldd /usr/sbin/postfix | grep libssl
libssl.so.39 => /usr/local/lib/libssl.so.39 (◯◯)
と postfix で LibreSSL 2.4.3 (/usr/local/lib/libssl.so.39)を使っていた場合、LibreSSL 2.5.5をインストールしても /usr/local/lib/libssl.so.43 なので影響を受けません。もし、/usr/local/lib/libssl.so にリンクしているものがあれば、最新の 43にかわるので注意が必要です。
動作中の Nginx への影響
コンパイル時に
--with-openssl=../libressl-2.3.2
のように、明示的に libressl のソースディレクトリを指定して組み込むため、影響を受けません。
というわけで、Postfix と Nginx ならば LibreSSLを更新しただけでは影響を受けませんし、組み込まれません。ので、次の作業が必要です。
Postfix 3.2.2 に LibreSSL 2.5.5 を組み込む
postfix において
src/tls/tls.h
#include <openssl/ssl.h> の下に
#undef OPENSSL_VERSION_NUMBER
#define OPENSSL_VERSION_NUMBER 0x10000002L
を書いて、バージョンをごまかします。
OpenSSL決め打ちで指定されているのが原因であり、詳細は
のほうをみてください。
念のため、 /etc/postfix の設定ファイルをすべてバックアップしておいてください。
make makefiles CCARGS="-DUSE_TLS -I/usr/local/include" AUXLIBS="-L/usr/local/lib -lssl -lcrypto -lz -ldl"
make
sudo make upgrade
です。
ここで LibreSSL の更新後に、 ldconfig をしていなければ
bin/postconf -dhx shlib_directory
bin/postconf: error while loading shared libraries: libssl.so.43: cannot open shared object file: No such file or directory
とでてアップグレードがコケるので注意。
成功したら
/etc/init.d/postfix restart
とpostfixを再起動しておけばOK.
あと
ldd /usr/sbin/postfix | grep libssl
libssl.so.43 => /usr/local/lib/libssl.so.43 (◯◯)
ってなっていたら、 新しい LibreSSLが使えるようになってます。
Nginx 1.13.4 に LibreSSL 2.5.5 を組み込む
とやることは変わりません。
違う所は、libressl のソース場所が異なる所です。
こういうのは自動化しておかないと超面倒なのでそうしておきましょう。
一応書き出しておきます。
Step 1 LibreSSLのソースに設定を加える
cd libressl-2.5.5
mkdir .openssl
cd .openssl
ln -s ../include .
mkdir lib
cp ../crypto/.libs/libcrypto.a lib
cp ../ssl/.libs/libssl.a lib
cd lib
strip -g libcrypto.a
strip -g libssl.a
というおまじないをしておきます。
Step 2 コンパイルオプションにいくつか追加
./configure
...
...
--with-openssl= [nginxのコンパイル場所からみて、libresslソースのディレクトリ]/libressl-2.5.5 \
--with-ld-opt="-lrt"
の2つを入れます。
で、./configure を実行
touch libressl-2.5.5ソースディレクトリ/.openssl/include/openssl/ssl.h
と、ssl.h のタイムスタンプを ./configure をしたより後にしておいてください。
じゃないとエラーでます。
make
※念のため nginx の設定ファイルをバックアップ。
sudo make install
してあとは
/etc/init.d/nginx stop
入れ替え作業(ソースからの場合にはロールバックできるように /usr/local/nginx-1.14.3 などバージョンごとに別フォルダにインストールして切り替えるのが普通かなと...)
/etc/init.d/nginx start
しておいて
nginx -V
をして libresslが組み込まれていたらOK。
2017年9月5日 @kimipooh
0 件のコメント:
コメントを投稿