1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Difyをプロキシ利用環境に構築した際にモデル追加でSSL証明書のエラーが表示された場合の対策

Last updated at Posted at 2025-01-27

概要

  • Difyをプロキシ利用環境構築時に、モデル(OpenAIやAzure Open AI(AOAI))の設定を試みた場合に、設定できないことがあります。
    • ログを見ると、SSL証明書の検証に失敗するというエラーSSL: CERTIFICATE_VERIFY_FAILEDが表示されている場合の対策になります。
    • プロキシで独自のSSL証明書を設定する必要がある場合に発生します。
  • 対策を何通りか示します。

別途投稿した別手順の方がより確実かと思いますので、ご参照をお勧めします。

現象

モデルの追加時にエラーが表示され、ログを確認すると次が表示されている。

 httpcore.ConnectError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1000)

前提

  • Dockerに対する「証明書以外」のプロキシの設定(プロキシのURL)は設定済みとします。
  • ホスト環境(Windows)でもプロキシURLに加え証明書を設定する必要がある環境が対象です。

原因

  • APIを呼び出すコンテナ(NAMESにdocker-api-1およびdocker-worker-1が設定されているコンテナ)のPython環境の証明書に、独自のSSL証明書が含まれていないため、外部API呼び出し時にSSL証明書の検証に失敗することが原因です。

対処

  • 対処概要としては、プロキシを実行しているDocker内のPython環境(venv)に独自証明書を追加すれば良いということになります

対処1

上記手順に従い、docker-compose.yamlの編集と独自証明書の配置を行い、コンテナ作成時に自動的に証明書が追加されるようにします。

対処2

既に構築済みの環境に手作業で配置します。
ただしこの方法はdocker起動時に毎回設定する必要があるので対処1が最終的な対処方法です
原因調査としての利用に限ります。

dockerのIMAGEがlanggenius/dify-api:0.15.0のものが対象です。

  1. docker psでNAMESがdocker-api-1およびdocker-worker-1のCONTAINER IDを調べます。
  2. 前項で調べたDockerの中に入ります(bashを起動)。
    docker container exec -it <CONTAINER ID> bash
    
  3. venvの証明書のフォルダーに移動します(Pythonのバージョンは変わることがあります)
    cd /app/api/.venv/lib/python3.12/site-packages/certifi/
    
  4. viがインストールされていない場合はインストールします
    apt-get update
    apt-get install -y vim
    
  5. viで証明書の内容を最後に追記します(貼り付けます)。
    vi cacert.pem
    
    • SHIFT+Gで最後に移動
    • iで編集モード
    • 最後に改行を入れてから貼り付け
    • ESCキーでコマンドモードに戻ってから、:wqで保存して閉じる
  6. 証明書の反映に再起動などは不要です。
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?