UPDATED(2020/9/2)
この話を公開してから1年が経ちました。 あれからUbuntu 20.04がリリースされ、2020年8月6日にOpenSSL最新版が公開されました。 基本的にこの話で変更したのはOpenSSL 1.1.1系を参照する文字だけで、つまりオリジナル版のコマンドの「c」を更新版のコマンドの「g」に変更したことです。 これらの変更はコマンドに反映されていますが、コマンドの実行結果を示す画像は変更されていません。 ご一読をお楽しみください!
アプリケーションで SSL/TLS プロトコルを使用している、あるいは使用しようとしている場合、OpenSSL を常に更新することをお勧めします。 これは、証明書の発行に果たす役割だけでなく、Heartbleed で学んだ教訓の後でも特にそうです。
Ubuntu 20.04.1 (2020 年 9 月現在の最新の 20.04 アップデート) には「OpenSSL 1.1.1 31 Mar 2020」、Ubuntu 18.04.03 (2019 年 8 月現在の最新の 18.04 アップデート) には「OpenSSL 1.1.1 11 Sep 2018」が搭載されいます。 現時点でのOpenSSL 1.1.1シリーズの最新バージョンは8/6出荷の「1.1.1g」です。 2020.
この話では、OpenSSLに依存する既存のアプリケーションとの相互運用性を壊すことなく、この更新を進める方法を案内します。
読者がbashコマンドに慣れていること、もちろん、更新はUbuntu 20.04 または 18.04 ボックスであることを前提にしています。 この手順が Ubuntu 16.04 で動作しない理由は見当たりませんが (分かる場合は教えてください)、テストしていません。
最初に行うことは、インストールされているバージョンを確認することです:
$ openssl version
私の場合は「OpenSSL 1.1.1 20 Mar 2020」という結果でした。1g をここからダウンロードして ~/Downloads ディレクトリに保存します:
$ cd ~/Downloads
$ wget https://www.openssl.org/source/openssl-1.1.1g.tar.gz
Step 2: ここにある SHA256 チェックサムとダウンロードした zip ファイルの計算されたチェックサムを比較して破損をチェックします:
$ wget https://www.openssl.org/source/openssl-1.1.1g.tar.gz.sha256
$ echo "$(cat openssl-1.1.1g.tar.gz.sha256) openssl-1.1.1g.tar.gz" | sha256sum --check
以下の画像では、上記のコマンドは黄色の下線で、チェックサムの結果(この場合は OK)は緑の下線になっています。
Step 3: ダウンロードした zip ファイルの署名確認
ダウンロードした zip ファイルの内容をインストールする前に、Ubuntu に付属の GnuPG (GnuPG で述べられているようにこれは信用できる) でその署名確認を行うことにします。
OpenSSL のダウンロードページには、次のような情報があります: 「署名用の PGP 鍵は OMC ページから入手できます。 現在リリースに署名しているメンバーには、Richard Levitte と Matt Caswell がいます。” OMCのページのリンクをたどると、メンバーの公開鍵にたどり着きます。 次のステップは、必要な鍵(levitte.txtとcaswell.txt)をダウンロードして、GnuPGのデータベースにインポートすることです。 curl:
$ curl 'http://pool.sks-keyservers.net:11371/pks/lookup?op=get&search=0x7953AC1FBC3DC8B3B292393ED5E9E43F7DF9EE8C' > levitte.txt
$ curl 'http://pool.sks-keyservers.net:11371/pks/lookup?op=get&search=0x8657ABB260F056B1E5190839D9C4D26D0E604491' > caswell.txt
これらの署名を信頼するには、ドメインの証明書を検証するのがよい方法です(下図)。 Googleの開発者ツール内のChromeセキュリティタブを使用すると、発行者の「Let’s Encrypt Authority X3」(ブラウザによって信頼されている)がドメインwww.openssl.org に証明書を発行したことを検証できます。つまり、これはドメイン検証証明書で、誰でもダウンロードした署名を信頼できるようにするためのものです。
両方の鍵はインポートされて、次のようにリストされます:
$ gpg --import caswell.txt
$ gpg --import levitte.txt
$ gpg --list-keys
次の図は、黄色の下線を引いた上記のコマンドの結果です: