自定义 CA 证书库
注意
本教程属于社区贡献,Open WebUI 官方团队不提供支持。它仅作为如何针对特定使用场景自定义 Open WebUI 的演示。想要贡献?欢迎查看贡献指南教程。
如果您在尝试运行 OI(Open WebUI)时遇到 [SSL: CERTIFICATE_VERIFY_FAILED] 错误,最有可能是因为您所处的网络会拦截 HTTPS 流量(例如在公司内网中)。
要解决此问题,您需要将新的 CA 证书添加到 OI 的信任存储库(truststore)中。
针对预构建的 Docker 镜像:
- 通过在
docker-run命令行选项中传入--volume=/etc/ssl/certs/ca-certificates.crt:/etc/ssl/certs/ca-certificates.crt:ro,将主机上的证书存储库挂载到容器内。 - 通过设置环境变量
SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt强制 Python 使用系统的信任存储库(参见 https://docs.docker.com/reference/cli/docker/container/run/#env)
来自 @KizzyCode 的 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 证书库挂载为只读,这可以防止意外修改主机的 CA 证书库。
针对本地开发:
您也可以通过在 Dockerfile 中进行修改,在构建(build)阶段将证书添加进去。如果您想修改 WebUI 的前端,这种方法很有用。
由于构建是在多阶段中进行的,因此您必须将证书同时添加到以下两个阶段:
- 前端(
build阶段):
COPY package.json package-lock.json <YourRootCert>.crt ./
ENV NODE_EXTRA_CA_CERTS=/app/<YourRootCert>.crt
RUN npm ci- 后端(
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