跳到主要内容

自定义 CA 证书库

注意

本教程属于社区贡献,Open WebUI 官方团队不提供支持。它仅作为如何针对特定使用场景自定义 Open WebUI 的演示。想要贡献?欢迎查看贡献指南教程。

如果您在尝试运行 OI(Open WebUI)时遇到 [SSL: CERTIFICATE_VERIFY_FAILED] 错误,最有可能是因为您所处的网络会拦截 HTTPS 流量(例如在公司内网中)。

要解决此问题,您需要将新的 CA 证书添加到 OI 的信任存储库(truststore)中。

针对预构建的 Docker 镜像

  1. 通过在 docker-run 命令行选项中传入 --volume=/etc/ssl/certs/ca-certificates.crt:/etc/ssl/certs/ca-certificates.crt:ro,将主机上的证书存储库挂载到容器内。
  2. 通过设置环境变量 SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt 强制 Python 使用系统的信任存储库(参见 https://docs.docker.com/reference/cli/docker/container/run/#env)

来自 @KizzyCodecompose.yaml 示例:

services:
  openwebui:
    image: ghcr.io/open-webui/open-webui:main
    volumes:
      - /var/containers/openwebui:/app/backend/data:rw
      - /etc/containers/openwebui/compusrv.crt:/etc/ssl/certs/ca-certificates.crt:ro
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    environment:
      - WEBUI_NAME=compusrv
      - ENABLE_SIGNUP=False
      - ENABLE_COMMUNITY_SHARING=False
      - WEBUI_SESSION_COOKIE_SAME_SITE=strict
      - WEBUI_SESSION_COOKIE_SECURE=True
      - ENABLE_OLLAMA_API=False
      - SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt

ro 标志将 CA 证书库挂载为只读,这可以防止意外修改主机的 CA 证书库。

针对本地开发

您也可以通过在 Dockerfile 中进行修改,在构建(build)阶段将证书添加进去。如果您想修改 WebUI 的前端,这种方法很有用。 由于构建是在多阶段中进行的,因此您必须将证书同时添加到以下两个阶段:

  1. 前端(build 阶段):
COPY package.json package-lock.json <YourRootCert>.crt ./
ENV NODE_EXTRA_CA_CERTS=/app/<YourRootCert>.crt
RUN npm ci
  1. 后端(base 阶段):
COPY <CorporateSSL.crt> /usr/local/share/ca-certificates/
RUN update-ca-certificates
ENV PIP_CERT=/etc/ssl/certs/ca-certificates.crt \
    REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt
This content is for informational purposes only and does not constitute a warranty, guarantee, or contractual commitment. Open WebUI is provided "as is." See your license for applicable terms.