Amazon Linux 2 AMI  OpenSSL1.1.1kソースからビルドしてインストールする


linux初心者の為、勉強の為にソースからビルドしてインストールしてみました。

参考記事

https://qiita.com/DQNEO/items/3613cc1d87c01121a9e2
https://qiita.com/knutpb1205/items/24326ff0e7b886354898

環境

Amazon Linux 2 AMI
OpenSSL1.1.1k
(最新バージョン確認 https://www.openssl.org/)
/opt/openssl/ にopensslをインストールする

手順

コンパイルとビルドに必要なパッケージをインストール

# yum install -y gcc make
# yum install perl zlib-devel

OpenSSLのソースをビルドしてインストール

URLを指定してファイルをダウンロード
# wget https://www.openssl.org/source/openssl-1.1.1k.tar.gz

解凍して展開
# tar xvfz openssl-1.1.1k.tar.gz

openssl-1.1.1kディレクトリに移動
# cd openssl-1.1.1k/

/opt/opensslディレクトリにインストール、シェアードライブラリとしてビルド、zlib使用
# ./config --prefix=/opt/openssl shared zlib

ビルド
# make

インストール
# make install

ちゃんと出来たか、バージョン確認してみる

# /opt/openssl/bin/openssl version

エラーが出るw

/opt/openssl/bin/openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory

対策

まず「libssl.so.1.1」があるか確認

find -name "libssl.so.1.1"
./home/ec2-user/openssl-1.1.1k/libssl.so.1.1
./opt/openssl/lib/libssl.so.1

/opt/openssl/lib/にちゃんといてくれたので、以下を実行
★(2021/5/5追記)/etc/ld.so.conf.d/lib64.confに/opt/openssl/lib/のパスを記述し、OSにldconfigで情報を伝える

echo "/opt/openssl/lib/" > /etc/ld.so.conf.d/lib64.conf
ldconfig

★(2021/5/5追記)/etc/ld.so.conf.d/のlib64.confに「/opt/openssl/lib/」のパスが記述されたか確認

cd /etc/ld.so.conf.d/
cat lib64.conf
/opt/openssl/lib/

今度こそ!バージョン確認

/opt/openssl/bin/openssl version
OpenSSL 1.1.1k  25 Mar 2021

♡できたみたい♡

libsslが/opt/openssl/lib/libssl.so.1.1にあるものとリンクしている
libcryptが/opt/openssl/lib/libcrypto.so.1.1にあるものとリンクしている
libzがリンクしていることを確認

ldd /opt/openssl/bin/openssl
        linux-vdso.so.1 (0x00007ffec31cb000)
        libssl.so.1.1 => /opt/openssl/lib/libssl.so.1.1 (0x00007f6f2f1c7000)
        libcrypto.so.1.1 => /opt/openssl/lib/libcrypto.so.1.1 (0x00007f6f2ece7000)
        libz.so.1 => /lib64/libz.so.1 (0x00007f6f2ead2000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f6f2e8ce000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f6f2e6b0000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f6f2e305000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f6f2f456000)

できてるみたい