8.47. OpenSSL-3.2.1

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

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

8.47.1. OpenSSL のインストール

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

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

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

make

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

HARNESS_JOBS=$(nproc) 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.2.1

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

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

注記

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

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

8.47.2. OpenSSL の構成

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

概略説明

c_rehash

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

openssl

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

libcrypto.so

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

libssl.so

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