CentOS7にOpenSSLをソースコードからインストールしてみました。インストールしたOpenSSLのバージョンは 3.0.15 です。作業はrootユーザーで行いました。
まずはソースを格納するディレクトリに移動します。
# cd /usr/local/src
OpenSSLのソースコードをダウンロードします。3.0.15 のところは任意のバージョンになおしてください。
# wget https://www.openssl.org/source/openssl-3.0.15.tar.gz
ダウンロードしたファイルのチェックサムを確認しておきます。オリジナルのソースファイルのチェックサムはOpenSSLのサイトで確認ができます。
# sha256sum openssl-3.0.15.tar.gz
ダウンロードしたファイルを展開します。
# tar zxvf openssl-3.0.15.tar.gz
展開後に新しく作られたディレクトリに移動します。
# cd openssl-3.0.15
config を実行します。OpenSSL3.0以降は Configure になっているようです。
# ./Configure
ただここで以下のようなエラーが出てしまいました。。
# ./Configure Can't locate IPC/Cmd.pm in @INC (@INC contains: /usr/local/src/openssl-3.0.15/util/perl /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 . /usr/local/src/openssl-3.0.15/external/perl/Text-Template-1.56/lib) at /usr/local/src/openssl-3.0.15/util/perl/OpenSSL/config.pm line 19. BEGIN failed--compilation aborted at /usr/local/src/openssl-3.0.15/util/perl/OpenSSL/config.pm line 19. Compilation failed in require at ./Configure line 23. BEGIN failed--compilation aborted at ./Configure line 23.
どうやら perl-IPC-Cmd というパッケージが足りていないようです。ですので、このパッケージをインストールします。
# yum install perl-IPC-Cmd
インストール後に再度 Configure を実行してみたところ、うまくいきました。
# ./Configure Configuring OpenSSL version 3.0.15 for target linux-x86_64 Using os-specific seed configuration Created configdata.pm Running configdata.pm Created Makefile.in Created Makefile Created include/openssl/configuration.h ********************************************************************** *** *** OpenSSL has been successfully configured *** *** If you encounter a problem while building, please open an *** issue on GitHub <https://github.com/openssl/openssl/issues> *** and include the output from the following command: *** *** perl configdata.pm --dump *** *** (If you are new to OpenSSL, you might want to consult the *** 'Troubleshooting' section in the INSTALL.md file first) *** **********************************************************************
続けて make を実行します。
# make
しばし時間がかかります。画面のログも出続けます。終わったときに成功したのかわかりづらいですが、echo $? をすると 0 となっていたので大丈夫なのでしょう。
# make : かなりのログが出る : /usr/bin/perl "-I." -Mconfigdata "util/dofile.pl" \ "-oMakefile" util/wrap.pl.in > "util/wrap.pl" chmod a+x util/wrap.pl make[1]: Leaving directory `/usr/local/src/openssl-3.0.15' # echo $? 0
最後に make install します。
# make install
こちらもしばし時間がかかります。make install も成功なのかわかりづらいため echo $? をしてみると 0 になっているので大丈夫なのでしょう。
# make install : かなりのログが出る : install doc/html/man7/proxy-certificates.html -> /usr/local/share/doc/openssl/html/man7/proxy-certificates.html install doc/html/man7/ssl.html -> /usr/local/share/doc/openssl/html/man7/ssl.html install doc/html/man7/x509.html -> /usr/local/share/doc/openssl/html/man7/x509.html # echo $? 0
OpenSSLのインストール先を確認します。
# which openssl
/usr/local/bin/openssl
ライブラリの状態を見てみます。
# ldd /usr/local/bin/openssl
# ldd /usr/local/bin/openssl linux-vdso.so.1 => (0x00007ffeb3985000) libssl.so.3 => not found libcrypto.so.3 => not found libdl.so.2 => /lib64/libdl.so.2 (0x00007f95750cf000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f9574eb3000) libc.so.6 => /lib64/libc.so.6 (0x00007f9574ae4000) /lib64/ld-linux-x86-64.so.2 (0x000055cc48d72000)
not found となっている libssl.so.3 と libcrypto.so.3 の場所を確認します。
# find /usr/local/ -name libssl.so.3
# find /usr/local/ -name libcrypto.so.3
# find /usr/local/ -name libssl.so.3 /usr/local/lib64/libssl.so.3 /usr/local/src/openssl-3.0.15/libssl.so.3 # find /usr/local/ -name libcrypto.so.3 /usr/local/lib64/libcrypto.so.3 /usr/local/src/openssl-3.0.15/libcrypto.so.3
/usr/local/lib64 配下にライブラリがあるようなので共有ライブラリのパスを追加します。/etc/ld.so.conf.d 配下に openssl-3.0.conf というファイルを作成して /usr/local/lib64 を書き込みます。
# cd /etc/ld.so.conf.d
# vi openssl-3.0.conf
記載した内容は1行です。
# cat openssl-3.0.conf /usr/local/lib64
システムにライブラリのパス情報を読み込ませます。
# ldconfig
システムキャッシュの内容を確認してみます。
# ldconfig -p | grep /usr/local
# ldconfig -p | grep /usr/local libssl.so.3 (libc6,x86-64) => /usr/local/lib64/libssl.so.3 libssl.so (libc6,x86-64) => /usr/local/lib64/libssl.so libcrypto.so.3 (libc6,x86-64) => /usr/local/lib64/libcrypto.so.3 libcrypto.so (libc6,x86-64) => /usr/local/lib64/libcrypto.so
/usr/local/lib64 配下のライブラリが読み込まれているようです。
OpenSSLのバージョンを確認してみます。
# openssl version
# openssl version OpenSSL 3.0.15 3 Sep 2024 (Library: OpenSSL 3.0.15 3 Sep 2024)
これでインストールが完了です。