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에 설치될 것으로 예상합니다. 어쩌면 설치하지 않았을 수도 있습니다.

관련 정보