自定义 CA 证书库
注意
本教程为社区贡献内容,不属于 OPL 数据空间官方支持范围。它主要演示如何按你的实际环境定制 OPL 数据空间。
如果你在运行 OPL 数据空间时遇到 [SSL: CERTIFICATE_VERIFY_FAILED],常见原因是你的网络环境会拦截 HTTPS 流量,例如公司内网代理。
要解决这个问题,需要把新的根证书加入 OPL 数据空间使用的信任证书库中。
预构建 Docker 镜像
- 把宿主机证书库挂载到容器中,例如:
--volume=/etc/ssl/certs/ca-certificates.crt:/etc/ssl/certs/ca-certificates.crt:ro- 设置
SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt,强制 Python 使用系统信任库。
示例 compose.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.crtro 表示只读挂载,可以避免误改宿主机的 CA 库。
本地开发
如果你在本地改 UI 或自行构建镜像,也可以直接在 Dockerfile 构建过程中加入证书。由于镜像使用了多阶段构建,需要在两个阶段都处理:
1. 前端构建阶段(build)
COPY package.json package-lock.json <YourRootCert>.crt ./
ENV NODE_EXTRA_CA_CERTS=/app/<YourRootCert>.crt
RUN npm ci2. 后端基础阶段(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