OpenSSLのお勉強のためUbuntu 16.04 LTSをVirtualBoxにインストールしました。ところが,バージョンを確認したら1.0.2gと古かったため,最新バージョン(2018年6月時点の最新版1.0.2o)にアップグレードします。
OpenSSLをバージョンアップすると,OpenSSLのバージョン固定で動作しているアプリケーションなど,動作しなくなるアプリケーションが出てくる可能性がありますので注意して実行してください。
以下の手順でOpenSSLを最新版にアップグレードしていきます。
注(2020年1月3日追記):OpenSSL 1.1.1dにアップグレードした際も,この手順でうまくいきました。しかし,バージョン確認の時にエラーになってしまったので,リンクを2つ追加しました。詳細はこのページの最後に書いてあります。
OpenSSLのバージョン確認
1.現在のバージョンを確認する
OpenSSLのバージョン確認コマンドで,現在インストールされているバージョンを確認します。
$ openssl version
Ubuntu 16.04 LTSはデフォルトではOpenSSL 1.0.2gがインストールされていることがわかります。
2.Ubuntuのアップグレードを試してみる
Ubuntuのアップグレードを試してみて,OpenSSLが最新になるかを確認します。
$ sudo apt update && sudo apt upgrade openssl
アップグレードが終わったので,OpenSSLのバージョンを確認します。
$ openssl version
バージョンは1.0.2gのままでした。
OpenSSLを最新版にするには,自分でインストールする必要があるようです。
OpenSSLのダウンロード
3.OpenSSLの最新バージョンをダウンロードする
2018年7月2日現在,OpenSSLの最新バージョンは1.0.2oです。この最新バージョンをダウンロードしてきます。
ダウンロードしたファイルを保存するディレクトリに移動して,OpenSSLの公式サイトからソースをダウンロードしてきます。
$ sudo wget https://www.openssl.org/source/openssl-1.0.2-latest.tar.gz
4.ダウンロードしたファイルの解凍
ダウンロードしてきたファイルを解凍します。
$sudo tar -zxf openssl-1.0.2-latest.tar.gz
同じディレクトリ下に「openssl-1.0.2o」のディレクトリができました。
OpenSSLのビルドとインストール
5.configを実行
解凍したopensslのディレクトリに移動して,「config」コマンドを実行します。
$ cd openssl-1.0.2o $ sudo ./config
6.makeを実行
続いて「make」コマンドを実行します。
$ sudo make
~中略~
正しく生成できたかを確認してみるために,「make test」コマンドを実行してもいいと思います。
7.make installを実行
Opensslをインストールします。
$ sudo make install
~中略~
これでOpenSSLのインストールは完了です。
ところが,openssl versionコマンドを実行しても,古いバージョンが出力されます。新しいバージョンの場所にパスを変更する必要があります。
OpenSSL入れ替え
8.リンク作成
まず,古いバージョンのOpenSSLを退避させます。退避させる場所はどこでもいいです。
例:
$ sudo mv /usr/bin/openssl /home/user/backup/
次に,新しいバージョンのOpenSSLにリンクを張ります。
$ sudo ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
9.バージョンの確認
これでOpenSSLのバージョンが最新版(1.0.2o)になりました。
$ openssl version
OpenSSL 1.1.1dにアップグレードした時の追加コマンド
2020年1月3日更新
OpenSSL 1.1.1dにアップグレードした時も,この手順でインストールまではうまくいったのですが,バージョン確認をしようとしたらリンクエラーになってしまいました。そこで,次のコマンドを実行してOpenSSL 1.1.1dのライブラリをリンクして解決しました。
下の例では,OpenSSL 1.1.1dを/usr/local/openssl/openssl/にインストールしています。
$ sudo ln -s /usr/local/openssl/openssl/libcrypto.so.1.1 /lib64/libcrypto.so.1.1 $ sudo ln -s /usr/local/openssl/openssl/libssl.so.1.1 /lib64/libssl.so.1.1