You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker环境下Ocelot网关用自签名证书调用.NET Core API出现SSL错误如何解决?

问题判断

你的判断完全正确,报错信息中的RemoteCertificateNameMismatch已经明确说明问题:你生成的自签名证书仅绑定了localhost域名,而Ocelot容器内部通过xplora.api这个容器域名访问下游API时,证书的域名校验无法通过;同时RemoteCertificateChainErrors是因为自签名证书的根证书默认不被系统信任。

安全解决步骤

不用开启不安全的证书忽略配置,按以下步骤操作即可:

1. 重新生成包含多域名的自签名证书

生成证书时将localhost、xplora.api都加入证书的**使用者备用名称(SAN)**字段,保证本地访问和容器内部访问都能通过域名校验。
可以使用openssl生成,示例命令:

openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes \
  -keyout xplora.api.key -out xplora.api.crt \
  -subj "/CN=xplora.api" \
  -addext "subjectAltName=DNS:localhost,DNS:xplora.api,IP:127.0.0.1"

生成的xplora.api.crt是公钥证书,xplora.api.key是私钥,替换下游API原来使用的自签名证书即可。

2. 将自签名根证书导入Ocelot网关容器的信任存储

因为Ocelot作为客户端发起HTTPS请求,需要信任你生成的自签名证书,所以要把公钥证书挂载到Ocelot容器内并添加到系统信任列表:
调整docker-compose配置,给Ocelot服务添加挂载和启动命令:

xploraapigateway:
  # 其他原有配置保持不变
  volumes:
    # 把本地的自签名证书挂载到容器内的证书目录
    - ./本地证书存放路径/xplora.api.crt:/usr/local/share/ca-certificates/xplora.api.crt
  # 根据镜像类型选择对应的更新证书命令,示例为Debian系镜像配置
  command: >
    sh -c "
    update-ca-certificates &&
    # 替换为你原有Ocelot服务的启动命令
    dotnet XploraApiGateway.dll
    "

如果你的容器镜像基于Alpine,需要先安装ca-certificates包,在启动命令开头添加apk add --no-cache ca-certificates即可

3. 验证生效

重启所有容器后再次通过Ocelot网关访问接口,即可正常通过证书校验,不会再报SSL连接错误。

内容的提问来源于stack exchange,提问作者JonR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 13:27:05