Python Requests: CA バンドルは verify に置くもので cert ではない
証明書エラーをクライアント秘密鍵の要求とみなすのではなく、承認済みの CA 信頼材料を検証設定に置きます。
同僚が組織の CA 証明書を渡してくれます。Requests には cert というパラメータがあります。名前は似ていますが、答える質問は異なります。
| 設定 | 目的 |
|---|---|
verify | 相手の検証に使う信頼材料を選択する |
cert | クライアント認証が必要なときに、クライアント証明書とその秘密鍵を提示する |
承認済みの傍受 CA の場合、Requests の操作で目的の CA バンドルを選択できます。
response = requests.get(
'https://example.com/',
proxies=routes,
verify='/path/to/approved-ca-bundle.pem',
timeout=15,
)ここで routes はアプリケーションの既存のプロキシマッピングです。パスは、このクライアントにとって正しい読み取り可能な信頼バンドルを指す必要があります。接続が失敗したというだけで選ばれた、ダウンロード済みの Web サイト証明書ではありません。
環境変数 REQUESTS_CA_BUNDLE もサポートされた信頼入力です。効果がないように見える場合は実際の送信経路を確認してください。準備済みリクエストのワークフローや明示的な設定によって、環境設定がどのように統合されるかが変わる場合があります。
CA の秘密鍵は必要ないはずです
クライアントが承認済みの発行者を認識するために必要なのは、公開 CA 証明書です。その署名用秘密鍵は別の当事者が持つ強力な秘密です。通常のプロキシ信頼の修復の一部として、アプリケーション利用者に配布すべきではありません。
クライアント証明書は、特定の宛先や別途設定された TLS 関係によって依然として要求されることがあります。それは別個の要件であり、すべての証明書検証エラーから推測されるものではありません。
次のエラーが現れたら、操作を名指ししてください。CA ファイルの読み込み、相手証明書の検証、クライアント ID の提示のどれかです。メッセージが変わるまでファイルを verify と cert の間で移すことは、その役割を選ぶ信頼できる方法ではありません。