OpenSSLはSSL証明書を認識しますが、geventhttpclientは認識しません。

OpenSSLはSSL証明書を認識しますが、geventhttpclientは認識しません。

ケースがありますNVIDIA Triton推論サーバー。それからそこでPythonクライアントそれを使うゲームhttpリクエストを実行するためのPythonパッケージ。

これはすべてマイクロサービスとしてデプロイされるため、あるコンテナではNVIDIA Tritonインスタンスを実行し、もう一方のコンテナでは推論要求のためにクライアントを実行します。

私が見つけた問題は、アプリケーションがTritonクライアントを使用して推論要求を実行しようとするたびに、次のエラーが発生することです。

ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1129)

これは自明です。しかし、もう少し詳しく見て、OpenSSLを使用して次の接続をシミュレートすると、次のようになります。

$ openssl s_client -connect triton.host:443

CONNECTED(00000003)正しい証明書を使用して正常に接続されました()。 cURLも機能します。

また、証明書が正しくインストールされていることを確認しました/etc/ssl/certs/ca-certificates.crt

何が問題なのか直感する人はいますか?

答え1

~からプロジェクトサイト:

geventhttpclient は certifi CA バンドルによって異なります。

/etc/ssl/certs/ca-certificates.crtしたがって、opensslやカールなどのシステムCAを使用しません。代わりに、certifiパッケージがPythonにインストールされることを期待しています。たぶんインストールしていない可能性があります。

関連情報