Closed3

プロキシかつ独自証明書、独自CA証明書の環境下での dify と openai-python

moriokamorioka

https://qiita.com/pm00/items/9983bac9f188e73cda20


https://github.com/openai/openai-python/issues/2359
https://ninthcode.net/230401-chatgpt-apierror/
https://medium.com/@akhilkanugolu/dealing-with-certificate-issues-in-the-openai-package-on-your-local-machine-a7f563394c6c
https://community.openai.com/t/ssl-certificate-verify-failed/32442/39
https://www.python-httpx.org/advanced/ssl/

openai-pythonは、内部でhttpxを使っている。その証明書は /usr/share/ca-certificates/ のモノを参照するのではなく、 certifi パッケージのcacert.pem ファイルを参照している様子(だとわかった)。

requestsだと( REQUESTS_CA_BUNDLEが効くようだが)、やはりca-certificatesでなく certifi のCA証明書を読むらしい。

https://dev.classmethod.jp/articles/how-to-manage-ca-root-certs-for-requets-library/

httpxはそれも効かないし、明示的にCA証明書を設定してやる必要があるらしい。。。。openai-pythonでは不可。

ということで、certifyパッケージのcacert.pem にCA証明書のPEMファイルを結合してやればよいらしい。


difyの場合、docker-compose.yamlの中で、ローカルCA.pem を certifi/cacert.pem に追加してやる手順を組み込む必要がある。※ docker imageを自前で作り直さないならば。

moriokamorioka

これだ。

  • ca-certificates の更新
  • pythonを利用するコンテナでは、所定部分のcertifiのCA証明書を更新

をそれぞれ実行してやればよい。

google: "docker-compose update certifi local issuer"

https://github.com/langgenius/dify/issues/20266

独自CA証明書を伴う場合の扱いは、これ:

https://qiita.com/tfukumori/items/1ba638831e6067120929

独自CA証明書を伴うopenai-api-compatibleモデルを扱う場合は、これ:

https://qiita.com/tfukumori/items/39081ac11d92e2fd9867
https://github.com/langgenius/dify/discussions/4600#discussioncomment-9965360

このスクラップは28日前にクローズされました