神戸六甲の峰から大阪湾を望む
一般的に,Ubuntu
Linuxコマンドでインストールされる「OpenSSL」は,Linuxディストリビューションに予めインストールされたライブラリであり,最新バージョンでない可能性があります。
そのため,セキュリティ上の懸念があれば,最新バージョンにアップデートしなければなりません。
そこで,今回はOpenSSLの最新ソースを用いたバージョンアップ手順について,実証することにします。
【実証前提条件】
・パソコン : Windows11 pro 24H2 (IPアドレス:IPv4固定値)
・Linux ディストリビューション : Ubuntu-24.04 LTS(lsb_release -a)
・WSL2 バーション : 2.4.13.0 (wsl --version)
・OpenSSL バージョン : 3.6.1へupdate(openssl version)
それでは始めます。
1.OpenSSL のホームページから最新ソースを入手
先に自己認証局(CA)構築のところで,OpenSSLのインストールを行いました。その時,OpenSSLのバージョンが低い場合はアップデートするための手順を記載しましたが,少し冗長になりましたので,改めて今回纏めることにしました。
OpenSSLを最新版にバージョンアップするには,最初に最新版ソースコードを入手する必要があります。そのため,OpenSSL
のソースファイルをダウンロードするフォルダに遷移します。(ディレクトリがなければ作ってください)
Linuxコード
cd /usr/local/src
続いて,OpenSSL
のホームページから最新ソースをダウンロードします。最新ファイル名はOpenSSL
のサイトで確認してください。
Linuxコード
sudo wget https://www.openssl.org/source/openssl-3.6.1.tar.gz
【追記】
OpenSSLをコンパイルすると,wgetのCA証明書の参照先が「/usr/local/ssl/certs」に変わるようです。そのため,次回からwgetを使うと「ERROR:
cannot verify www.openssl.org's certificate.」と出力されます。
これを回避する手段としてはいろいろありますが,そのサーバのCA証明書の置き場所を「/usr/local/ssl/certs」にシンボリックリンクで教えるのが一番簡単です。
「/usr/local/ssl/certs」ディレクトリの下には何もファイルが無いことを確認して,このディレクトリを削除します。そのうえでサーバのCA証明書の置き場所(Ubuntuの場合は「/etc/ssl/certs」)をシンボリックリンクで指定します。
具体的には以下のコマンドになります。
Linuxコード
sudo rm -rf /usr/local/ssl/certs
sudo ln -s /etc/ssl/certs /usr/local/ssl/certs
これにより「/usr/local/ssl/certs」が「/usr/local/ssl/certs -> /etc/ssl/certs 」に変わっていることを確認してください。
2.ダウンロードした圧縮ファイルを解凍しインストール
ダウンロードしたソースファイルを解凍します。次のコマンドを実行します。
Linuxコード
sudo tar xvf openssl-3.6.1.tar.gz
解凍したフォルダに遷移します。
Linuxコード
cd openssl-3.6.1
パッケージソースをbuildするための依存ライブラリをインストールします。(既にやっていればしなくて良いです。)
Linuxコード
sudo apt install build-essential
ソースコードをコンパイルしインストールします。(かなり時間がかかります)
Linuxコード
sudo ./config
sudo make
sudo make install
3.opensslのバージョンを確認し依存関係を検証
opensslのバージョンを確認します
Linuxコード
openssl version
バージョンが正常に出力されない場合は,次のコマンドで依存関係を検証します。
Linuxコード
ldd /usr/local/bin/openssl
【出力メッセージの中に以下のメッセージがある場合】
libssl.so.3 => not found
libcrypto.so.3 => not found
見つからないライブラリの存在場所を探します。
Linuxコード
sudo find /usr/local/ -name libssl.so.3
【出力例】
/usr/local/src/openssl-3.6.0/libssl.so.3
/usr/local/lib64/libssl.so.3
Linuxコード
sudo find /usr/local/ -name libcrypto.so.3
【出力例】
/usr/local/src/openssl-3.6.0/libcrypto.so.3
/usr/local/lib64/libcrypto.so.3
「libssl.so.3」と「libcrypto.so.3」のどちらも「/usr/local/lib64」フォルダ下にあることが分かりました,
4.ライブラリ検索のためのパスを通す
共有ライブラリ検索のための設定ファイルは「/etc/ld.so.conf」ですが,「/etc/ld.so.conf.d」フォルダ下に該当ライブラリの検索パスファイルを書くと取り入れられます。
スーパーユーザ権限「#」で次のコマンドを実行してください。
Linuxコード
echo "/usr/local/lib64" > /etc/ld.so.conf.d/lib64.conf
「/etc/ld.so.conf」の中身をPCが使う「/etc/ld.so.cache」に反映するため「ldconfig」コマンドを実行します。
Linuxコード
sudo ldconfig
5.バージョンを確認し最新版のインストール完了
OpenSSLのバージョンを確認します。
Linuxコード
openssl version
【出力メッセージ例】
OpenSSL 3.6.1 27 Jan 2026 (Library: OpenSSL 3.6.1 27 Jan 2026)
これでOpenSSLの最新バージョンへのアップデートは終わりです。
6.まとめ
今回は,OpenSSLのバージョンアップ手順を備忘録として纏めました。OpenSSLは,暗号化やCA証明書作成,SSL証明書作成などで,大変重宝するコマンドです。
SSL証明書では有効期限の更新をつい忘れてしまうことがありますが,このコマンドを使えば,サイトのSSL証明書の発行日や有効期限を知ることも可能です。
サーバの主要な構成コマンドの一つですので,定期的にバージョンアップするよう心掛けたいものです。
さて,永らくLinuxサーバの構築にかかわるテーマを実証してきましたが,あとApache2とUbuntuのバージョンアップ手順を実証して,インフラ関係のテーマを一区切りとし,Googleアプリ等の応用関係にテーマを戻していきたいと考えています。
それでは,楽しいITリテラシーライフをお過ごしください。
(ご注意)情報の正確性を期していますが,実施される場合には自己責任でお願いします。
0 件のコメント:
コメントを投稿