環境
Ubuntu 18.04
概要
色々あって最新のOpenSSLの環境を作る必要があり、そのためにソースからOpenSSLをビルドした手順のメモ
依存ライブラリのインストール
入ってないことないと思うけど
apt install build-essential
手順
まずはソースのダウンロードしないと始まらない
wget https://www.openssl.org/source/openssl-1.1.1h.tar.gz
最新版のURLは常に変わる。 https://www.openssl.org/source/ から一番新しいURLに読み直すこと
解凍
tar zxf openssl-1.1.1h.tar.gz cd openssl-1.1.1h
ビルド設定
./config --prefix=/usr/local --openssldir=/usr/local/ssl shared
- sharedはつけた方が良さげ
--prefix
は任意だが デフォルトだと/usr/local/sslになってしまうので明示的に/usr/localにした--openssldir
はデフォルトも /usr/local/ssl ではある。binとかlib以外のファイルたちがここに入る。
いざビルド
make
チェック PASSが出なければなんらかエラーってこと
make test
成功時には以下のようなメッセージが最後に表示される。
All tests successful. Files=158, Tests=2634, 87 wallclock secs ( 1.42 usr 0.28 sys + 73.47 cusr 11.21 csys = 86.38 CPU) Result: PASS
インストール ファイルが多いのか結構時間かかる印象
make install
確認
どれどれ
# /usr/local/bin/openssl version -a /usr/local/bin/openssl: relocation error: /usr/local/bin/openssl: symbol EVP_mdc2 version OPENSSL_1_1_0 not defined in file libcrypto.so.1.1 with link time reference
は????
どうやら上手くインストールできてない。ライブラリを読めてないっぽい
ライブラリ再読み込み
ldconfig
今度はうまくできた
# /usr/local/bin/openssl version -a OpenSSL 1.1.1h 22 Sep 2020 built on: Sat Nov 14 16:59:41 2020 UTC platform: linux-x86_64 options: bn(64,64) rc4(16x,int) des(int) idea(int) blowfish(ptr) compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -O3 -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAESNI_ASM -DVPAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DNDEBUG OPENSSLDIR: "/usr/local/ssl" ENGINESDIR: "/usr/local/lib/engines-1.1" Seeding source: os-specific
もしldconfigしてもうまくいかない場合は lddコマンドで依存ライブラリの確認
# ldd /usr/local/bin/openssl linux-vdso.so.1 (0x00007ffc62488000) libssl.so.1.1 => /usr/local/lib/libssl.so.1.1 (0x00007fea638d1000) libcrypto.so.1.1 => /usr/local/lib/libcrypto.so.1.1 (0x00007fea633e0000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fea631c1000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fea62dd0000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fea62bcc000) /lib64/ld-linux-x86-64.so.2 (0x00007fea63e20000)
で、
ldconfig -v|grep '/'
とかで探索されるライブラリのパス一覧を取得
もしなければ
echo /usr/specify/lib/path/here > /etc/ld.so.conf.d/openssl111.conf
とかで追記して再度
ldconfig
すればおk
変更
実行ファイルは2つなので
mv /usr/bin/c_rehash /usr/bin/c_rehash.backup mv /usr/bin/openssl /usr/bin/openssl.backup
すればインストールしたmy opensslが優先される。やったね