- 脆弱性のある OpenSSL の version 情報はこちら
- OpenSSL の主要な version
- サポート期限切れの version (1.1.0 以下など)は、脆弱性が見つかっても原則修正が行われないため、最新版/脆弱性修正版への移行が必要です。
- Python 3.10 以降から OpenSSL 1.1.1 以降が求められます [PEP 644]。
- c言語
- 特に、構造体、constなど。
本家の migration_guide をご参照下さい。
Ver. 1.1 未満の libssl libcrypto を link していたレガシーコードを、Ver. 1.1 以降向けのコードに修正する場合。
エラー毎の対応策を以下で説明(他にもお薦めの対応策をお知らせ頂ければ、それらへのリンクを貼らせて頂くか、以下に集約させて頂ければと思います(ただし、作業は時間のあるときになってしまいます…))。
- 鍵構造体要素の参照に対して
"incomplete type"
エラーが出る場合 "storage size of ‘xxx’ isn’t known"
エラーが出る場合"error: invalid application of ‘sizeof’ to incomplete type ‘BIGNUM’ {aka ‘struct bignum_s’}"
が出る場合"DEPRECATEDIN_"
が出る場合
ついでに移行しておくとよい関数群
以下【非推奨】、やむを得ない場合の応急措置となります。
OS の OpenSSL ライブラリの version が 1.1 以降になったため、Ver. 1.0 以前のライブラリを入手したい場合。
Ubuntu/Debian系:
apt list libssl*
で入手可能なバージョンを確認し、例えば libssl1.0.2, libssl1.0.0 などを sudo apt install
する。必要なバージョンが見つからない場合には /etc/apt/sources.list
に以下のような行を追加し、sudo apt update
後に上記を試す。
deb http://security.ubuntu.com/ubuntu xenial-security main
CentOS/RedHat系:
sudo dnf install compat-openssl10-devel
- 依存関係を解決するためにインストール済みパッケージの削除を許可する必要がある場合には --allowerasing オプションを付ける。
libssl, libcrypto ver. 1.1 以降を link することを想定して書いたコードに 1.0 以前を link させたい場合。例えば、実行環境を変えたら Ver. 1.1 未満のライブラリしか利用できなかった場合など。この場合は、最新コードに OpenSSL 1.1.0 Changes に記載されている以下の範囲のようなコードを追加すればよい。
#if OPENSSL_VERSION_NUMBER < 0x10100000L
/* リンクする OpenSSL の version が 1.1 未満の場合には、この部分が追加される。
(Ver. 1.1以降で追加された関数を Ver. 1.1未満のライブラリで実現する関数群)*/
#endif
当サイトのコンテンツや情報において、可能な限り正確な情報を掲載するよう努めています。しかし、誤情報が入り込んだり、情報が古くなったりすることもあります。必ずしも正確性を保証するものではありません。また合法性や安全性なども保証しません。
当サイトに掲載された内容によって生じた損害等の一切の責任を負いかねますので、ご了承ください。 また当サイトからリンクやバナーなどによって他のサイトに移動された場合、移動先サイトで提供される情報、サービス等について一切の責任も負いません。