0

ほぼ同一の 2 つのシステム (両方とも Fedora 25 を実行し、両方とも同様のパッケージ バージョンがインストールされている) で、一方のシステムは SSL 証明書検証エラーで失敗し、もう一方のシステムはそうではありません。つまり、私が実行した場合:

import requests
r = requests.get('https://insidehost.corp.example.com')

あるシステムでは機能しますが、他のシステムでは失敗します。

requests.exceptions.SSLError: ("bad handshake: Error([('SSL routines', 'ssl3_get_server_certificate', 'certificate verify failed')],)",)

最初は、必要な CA 証明書が不足しているだけだと思いましたが、python を実行すると、失敗したシステムで python がca bundle を開こうとしていないことstraceがわかりました。つまり、動作するシステムでは次のようになります。

strace -e trace=open,stat python testscript.py |& grep /etc/pki

収量のみ:

open("/etc/pki/tls/legacy-settings", O_RDONLY) = -1 ENOENT (No such file or directory)
stat("/etc/pki/tls/certs/ca-bundle.crt", {st_mode=S_IFREG|0444, st_size=257079, ...}) = 0
open("/etc/pki/tls/certs/ca-bundle.crt", O_RDONLY) = 4

しかし、失敗したシステムでは次のようになります。

open("/etc/pki/tls/legacy-settings", O_RDONLY) = -1 ENOENT (No such file or directory)

python3さらに、失敗したシステムで同じテスト スクリプトを実行すると...動作します!

どちらの場合も、pythonから/usr/bin/pythonですpython-2.7.13-1.fc25.x86_64。どちらのシステムも*_CA_BUNDLE環境変数を設定していません。

4

1 に答える 1