OpenSSL は、コンピューター ネットワーク上の安全な通信のための SSL および TLS プロトコルを実装する広く使用されている暗号化ライブラリです。 OpenSSL は、Apache Web サーバー、PHP、Postfix などの多くのプログラムで使用されています。 OpenSSL は、暗号 (AES, Blowfish, DES, IDEA など)、暗号ハッシュ関数 (MD5, MD4, SHA-1, SHA-2 など)、公開鍵暗号 (RSA, DSA, Diffie-Hellman key exchange) など、さまざまな暗号アルゴリズムのサポートを提供します。
このチュートリアルでは、Ubuntu 18.04 および CentOS 7.6 サーバーに、最新の安定版 OpenSSL をソースからインストールする方法を順を追って説明します。
何をするのか?
- Install Dependencies
- Download OpenSSL Source Code
- Install OpenSSL
- Compile and OpenSSL をインストールする
- リンクライブラリの設定
- OpenSSL バイナリの設定
- テスト
ステップ 1 – テスト。 依存関係のインストール
最初のステップです。 OpenSSLライブラリをソースからコンパイルする前に、Ubuntuでは「build-essential」パッケージ、CentOSでは「Development Tools」パッケージを含むいくつかのパッケージの依存関係をインストールします。
Ubuntu
の場合
Ubuntuリポジトリを更新し、以下のaptコマンドを使用してソフトウェアコンパイルのためのパッケージの依存関係をインストールします。
yum group install 'Development Tools'
yum install perl-core zlib-devel -y
インストールが完了したら、次のステップに進みます。
Step 2 – OpenSSLのダウンロード
このチュートリアルでは、最新の安定版OpenSSL – OpenSSL 1.0.2o をインストールする予定です。 OpenSSL サイトからソース コードをダウンロードできます。
‘/usr/local/src’ ディレクトリに移動し、wget を使用して OpenSSL ソース コードをダウンロードします。
cd /usr/local/src/
wget https://www.openssl.org/source/openssl-1.0.2o.tar.gz
次に openssl.tar.gz ファイルを展開し、’openssl’ ディレクトリに移動します。
tar -xf openssl-1.0.2o.tar.gz
cd openssl-1.0.2o
OpenSSL ソース コードはダウンロードされました。
ステップ 3 – OpenSSL
システムにカスタム OpenSSL バージョンをインストールする前に、以下のコマンドを使ってインストール済みバージョンをチェックしましょう。
openssl version -a
以下は Ubuntu での結果です:
そしてこれは CentOS での結果です:
「1.1.0g」バージョンを最新の安定版 1.0 に交換することとします。0.2o.
新しいバージョンの OpenSSL を特定のディレクトリ ‘/usr/local/ssl’ にインストールし、OpenSSL のリンク ライブラリを有効にして、OpenSSL の新しいバイナリ PATH を構成します。
OpenSSLのインストールとコンパイル
OpenSSLをダウンロードしたディレクトリ’/usr/local/src/openssl’に移動します。
cd /usr/local/src/openssl-1.0.2o
以下のコマンドでOpenSSLの設定とコンパイルができます。
./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl shared zlib
make
make test
OpenSSLのコンパイル処理を待ちます。
- –prefix and –openssldir = OpenSSLの出力パスを設定します。
- shared = shared libraryを強制作成する。
- zlib = zlibライブラリを使った圧縮を有効にします。
コンパイル処理が完了したら、以下のコマンドでOpenSSLをインストールします。
make install
OpenSSL は ‘/usr/local/ssl’ ディレクトリにインストールされます。
リンクライブラリの設定
次に OpenSSL 用共有ライブラリの設定をおこないます。 新しい OpenSSL バイナリは、’/usr/local/ssl/lib’ ディレクトリからライブラリ ファイルを読み込みます。
‘/etc/ld.so.conf.d’ ディレクトリに移動し、新しい設定ファイル ‘openssl-1.0.2o.conf’ を作成します。
cd /etc/ld.so.conf.d/
vim openssl-1.0.2o.conf
openssl library path ディレクトリを貼付けると、’openssl-1.0-2o.conf’ となります。
/usr/local/ssl/lib
保存して終了します。
次に、以下のコマンドを使用してダイナミックリンクを再ロードします。
sudo ldconfig -v
すると、「/usr/local/ssl/lib」ディレクトリにOpenSSLライブラリがロードされたことが確認されます。
Ubuntu:
CentOS:
Configure OpenSSL Binary
openssl binary ‘/usr/bin/openssl or /bin/openssl’ を新しいバージョン ‘/usr/local/ssl/bin/openssl’ と交換することにします。
Ubuntuの18.04 LTS
Backup the binary files.
mv /usr/bin/c_rehash /usr/bin/c_rehash.BEKUP
mv /usr/bin/openssl /usr/bin/openssl.BEKUP
Edit the ‘/etc/environment’ file using vim.
vim /etc/environment
Now add the new OpenSSL binary directory as below
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/local/ssl/bin"
Save and exit.
Reload the environment file and test the new updated binary PATH.
Save the exit…
Edit the environment file.
source /etc/environment
echo $PATH
ここで、OpenSSLのバイナリファイルを再度確認します。
which openssl
以下のような結果が表示されます。6
CentOSのOpenSSLバイナリファイルをバックアップします。
mv /bin/openssl /bin/openssl.BEKUP
OpenSSL用の新しい環境ファイルを作成します。
vim /etc/profile.d/openssl.sh
以下の設定をペーストします。
#Set OPENSSL_PATHOPENSSL_PATH="/usr/local/ssl/bin"export OPENSSL_PATHPATH=$PATH:$OPENSSL_PATHexport PATH
保存して終了します。
openssl.sh ファイルを実行できるように設定します。
chmod +x /etc/profile.d/openssl.sh
OpenSSL環境を読み込み、以下のコマンドでPATHのbinディレクトリを確認します。
source /etc/profile.d/openssl.sh
echo $PATH
ここでOpenSSLファイルを確認します。
which openssl
以下のような結果になります。
ステップ4 – テスト
以下のコマンドを使用してOpenSSLの新しいバージョンをテストします。
openssl version -a
Ubuntuでの結果
CentOSでの結果