らくがきちょう

なんとなく

CentOS 7.6 にソースコードから OpenSSL 1.1.1c をインストールする

現時点で CentOS7.6 標準リポジトリからインストール出来る OpenSSL のバージョンは 1.0.2k-16 でした。

# openssl version
OpenSSL 1.0.2k-fips  26 Jan 2017

# rpm -q openssl
openssl-1.0.2k-16.el7_6.1.x86_64

しかし、OpenSSL の公式サイトではバージョン 1.1.1 までリリースされており、CentOS 標準リポジトリ上の OpenSSL はかなり古いことが分かります。 そこで、今回は CentOS 7.6 にソースコードから OpenSSL 1.1.1c をインストールしています。 ソースコードからのインストール方法は OpenSSL の公式 Wiki に記載されています。

依存パッケージのインストール

OpenSSL 自体をコンパイルする前に、依存パッケージをインストールしておきます。

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

コンパイル

次に、ソースコードをダウンロードします。

curl https://www.openssl.org/source/openssl-1.1.1c.tar.gz -o /usr/local/src/openssl-1.1.1c.tar.gz

コンパイルします。 環境 (スペック) に依存しますが、コンパイルが完了するまでには、しばらく時間がかかります…

cd /usr/local/src
tar xvzf openssl-1.1.1c.tar.gz
cd openssl-1.1.1c/
./config --prefix=/usr/local/openssl-1.1.1c shared zlib
make depend
make
make test
make install

--prefix で指定したパスへインストールされているはずです。

# ls -l /usr/local/openssl-1.1.1c/
total 0
drwxr-xr-x 2 root root  37 Jun  8 14:06 bin
drwxr-xr-x 3 root root  21 Jun  8 14:06 include
drwxr-xr-x 4 root root 159 Jun  8 14:06 lib
drwxr-xr-x 4 root root  28 Jun  8 14:07 share
drwxr-xr-x 5 root root 140 Jun  8 14:06 ssl

システム全体の共有ライブラリへ追加する

ldconfig を使い、コンパイルしたライブラリをシステム全体へ追加します。 まず、事前に現在の OpenSSL 関連ライブラリ (libssl) を確認しておきます。

# ldconfig -p | grep -i libssl
        libssl3.so (libc6,x86-64) => /lib64/libssl3.so
        libssl.so.10 (libc6,x86-64) => /lib64/libssl.so.10

今回、/usr/local/openssl-1.1.1c/lib に追加したライブラリも参照されるよう、/etc/ld.so.conf.d 配下に設定ファイルを新規作成します。

cat << EOF > /etc/ld.so.conf.d/openssl-1.1.1c.conf
/usr/local/openssl-1.1.1c/lib
EOF

作成した設定ファイルを読み込み直し、共有ライブラリのキャッシュを更新する為、ldconfig を実行します。

# ldconfig

再度、libssl のパスを確認すると、追加したパスが表示されるはずです。

# ldconfig -p | grep -i libssl
        libssl3.so (libc6,x86-64) => /lib64/libssl3.so
        libssl.so.10 (libc6,x86-64) => /lib64/libssl.so.10
        libssl.so.1.1 (libc6,x86-64) => /usr/local/openssl-1.1.1c/lib/libssl.so.1.1
        libssl.so (libc6,x86-64) => /usr/local/openssl-1.1.1c/lib/libssl.so

追加インストールした OpenSSL は実行パスに追加していない為、絶対パスで実行し、バージョンを確認してみます。 以下のように「1.1.1c」であることが確認出来れば、インストールは完了です。

# /usr/local/openssl-1.1.1c/bin/openssl version
OpenSSL 1.1.1c  28 May 2019