openssl アップグレード | 証明書の検証に失敗しました

openssl アップグレード | 証明書の検証に失敗しました

私は CentOS7 マシンで作業しており、マシンの openssl バージョンを 1.0.2k -> 1.1.0l にアップグレードしようとしています。アップグレード後に、サーバー (変更されていない) とのハンドシェイク プロセスが失敗するようで、原因を突き止めようとしています。

両方の openssl バージョンで次のコマンドを実行します。

openssl s_client -showcerts -connect サーバー:ポート

新しい方では失敗しました (-CAfile 検証を指定した場合、両方で機能します)。結果の差分:

古い 1.0.2k (ハンドシェイク成功):

サーバー一時キー: ECDH、P-256、256 ビット新規、TLSv1/SSLv3、暗号は ECDHE-RSA-AES128-GCM-SHA256 新規 1.1.0l (ハンドシェイクに失敗):

サーバー一時キー: X25519、253 ビット新規、TLSv1.2、暗号は ECDHE-RSA-AES128-GCM-SHA256 検証戻りコード: 20 (ローカル発行者証明書を取得できません) 違いを理解し、なぜ異なるのかについて助言していただければ幸いです。

ちなみに、私はここで同様の脅迫を始めました: https://stackoverflow.com/questions/68763253/openssl-upgrade-fail-validating-certificate?noredirect=1#comment121583146_68763253 あまり運がなかった。

ありがとう :)

答え1

Centos 7 では、次のコマンドでこの問題を解決することもできます。

#Prepare to compile
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm -y
yum groupinstall -y "Development Tools" "Development Libraries"

#Build from source
cd /usr/src
# --no-check-certificate because of that issue, your system will not validate letsencrypt certificate at openssl.org until finish update
wget --no-check-certificate https://www.openssl.org/source/openssl-1.1.1l.tar.gz
tar -zxf openssl-1.1.1l.tar.gz
cd openssl-1.1.1l
./config
make
make install

yum install ca-certificates -y 

答え2

今後の参考のために、ここに解決策を追加します。

opensslバージョン1.0.2k以上で作業を開始するとの上centos7 マシンでは、ルート解決パスの動作が変更されているようです。

Openssl は、証明書ストアの場所の定義済みリストを調べますが、/val/ssl で cert.pem ファイルに遭遇すると、それをテストし、リモートを検証できない場合は失敗します。

私の「有効な」証明書は /etc/ssl にあり、クライアントのマシンであったため、/var/ssl ファイルを削除するように依頼することはできませんでした。

私の解決策は、openssl が失敗した場合に備えて、プログラムで正しい cert.pem を選択することでした (マシンの openssl バージョンを変更せずに、これは禁止されていました)。

関連情報