8.47. OpenSSL-3.1.2

OpenSSL パッケージは暗号化に関する管理ツールやライブラリを提供します。 これを利用することにより、他のパッケージにおいて暗号化機能が実現されます。 例えば OpenSSH、Email アプリケーション、(HTTPS サイトアクセスを行う)ウェブブラウザーなどです。

概算ビルド時間: 3.0 SBU
必要ディスク容量: 587 MB

8.47.1. OpenSSL のインストール

OpenSSL をコンパイルするための準備をします。

./config --prefix=/usr         \
         --openssldir=/etc/ssl \
         --libdir=lib          \
         shared                \
         zlib-dynamic

パッケージをコンパイルします。

make

ビルド結果をテストする場合は以下を実行します。

make test

30-test_afalg.t というテストが 1 つだけ失敗します。 それはカーネルオプションの CONFIG_CRYPTO_USER_API_SKCIPHER が有効でない場合、あるいは CBC が実装された AES 機能を提供するオプション(たとえば CONFIG_CRYPTO_AESCONFIG_CRYPTO_CBC との組み合わせや、CPU が AES-NI をサポートする際の CONFIG_CRYPTO_AES_NI_INTEL など)が一つもない場合です。 失敗しても、無視してかまいません。

パッケージをインストールします。

sed -i '/INSTALL_LIBS/s/libcrypto.a libssl.a//' Makefile
make MANSUFFIX=ssl install

ドキュメントディレクトリにバージョンを含めます。 他のパッケージとの整合をとるためです。

mv -v /usr/share/doc/openssl /usr/share/doc/openssl-3.1.2

必要であれば、さらにドキュメントをインストールします。

cp -vfr doc/* /usr/share/doc/openssl-3.1.2
[注記]

注記

ぜい弱性への対処を行った新バージョンが公開されたら、OpenSSL をアップデートすることになります。 OpenSSL 3.0.0 以降では、バージョンのつけ方が MAJOR.MINOR.PATCH という形式になりました。 API/API の互換性は、同一の MAJOR バージョン番号では保証されます。 本パッケージは libcrypto.so または libssl.so へのリンクを行っていますが、LFS では共有ライブラリをインストールするだけなので、MAJOR バージョン番号が同一のアップグレードである限り は、パッケージを再コンパイルする必要はありません。

OpenSSH をインストールしている場合は、上に示した規則とは異なる対応が必要です。 OpenSSL には必要以上に厳しいバージョンチェックが含まれているため、たとえ OpenSSH の MAJOR バージョンが変わっていなくても MINOR バージョンが変わっただけで、SSH クライアントも SSH サーバーも動作停止してしまいます。 そのような更新が発生した際には OpenSSH の再ビルドが必要となります。 OpenSSH を使って今現在、システムにアクセスしている場合、MINOR バージョンが新しくなった OpenSSL にアップグレードした後には、ログアウトする前に、OpenSSH を再ビルドして再インストールしてください。 そうしておかないと、SSH を通じたログインができなくなります。

そうであっても、それらのライブラリにリンクしているプログラムが稼働中であるなら、一度停止してから再起動することが必要です。 詳しくは関連する話が 「アップグレードに関する問題」 にあるので参照してください。

8.47.2. OpenSSL の構成

インストールプログラム: c_rehash, openssl
インストールライブラリ: libcrypto.so, libssl.so
インストールディレクトリ: /etc/ssl, /usr/include/openssl, /usr/lib/engines, /usr/share/doc/openssl-3.1.2

概略説明

c_rehash

ディレクトリ内のすべてのファイルをスキャンする Perl スクリプト。 それらのファイルに対するハッシュ値へのシンボリックリンクを生成します。 c_rehash の利用は非推奨と考えられており、この代わりに openssl rehash コマンドを使ってください。

openssl

OpenSSL の暗号化ライブラリが提供するさまざまな関数を、シェルから利用するためのコマンドラインツール。 man 1 openssl に示される数多くの関数を利用することができます。

libcrypto.so

各種のインターネット標準にて採用されている暗号化アルゴリズムを幅広く実装しています。 このライブラリが提供する機能は、SSL、TLS、S/MIME を実装する OpenSSL において利用されており、また OpenSSHOpenPGP、あるいはこの他の暗号化標準の実装にも利用されています。

libssl.so

トランスポート層セキュリティ(Transport Layer Security; TLFS v1)プロトコルを実装しています。 これは豊富な API 関数とそのドキュメントを提供します。 ドキュメントは man 7 ssl の実行により参照できます。