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

LDAP作为证书权威时Nginx Docker出现err_cert_authority_invalid问题求助

问题:封闭网络中Nginx Docker SSL证书权威无效(err_cert_authority_invalid)

我正在搭建一个受限访问互联网的封闭网络系统,使用Nginx Docker处理SSL。系统自有Certificate Authority,提交证书签名请求并获取到证书后,将证书和密钥配置到Nginx中,服务端可正常返回证书,但客户端出现err_cert_authority_invalid错误(见截图)。查看证书的CA URI为LDAP地址ldap://{ldap stuff},我可通过该地址执行LDAP搜索获取cACertificate。此前未接触过以LDAP字符串作为证书权威的情况,推测可能需要在运行Nginx的Docker中安装LDAP客户端来解析CA,或是需将搜索到的证书安装到系统中,现寻求解决方案。

Nginx配置

server {
    listen 443 default_server ssl ipv6only=off;
    server_name some.thing.edu;

    ssl_certificate /etc/ssl/certs/sigend.crt;
    ssl_certificate_key /etc/ssl/private/private.key;

    location / {
        proxy_pass         http://app_web;
        proxy_redirect     off;
        proxy_http_version 1.1;
        proxy_cache_bypass $http_upgrade;
        proxy_set_header   Upgrade $http_upgrade;
        proxy_set_header   Connection keep-alive;
        proxy_set_header   Host $host;
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
        proxy_set_header   X-Forwarded-Host $server_name;
        proxy_buffer_size           128k;
        proxy_buffers               4 256k;
        proxy_busy_buffers_size     256k;
    }
}

错误截图

证书权威无效错误截图


解决方案

1. 提取CA证书并配置完整证书链

浏览器/客户端不会自动通过LDAP地址拉取CA证书,这是问题核心。需要先获取CA证书,让Nginx返回完整的信任链:

  • 从LDAP提取CA证书
    先安装ldap-utils(本地或Docker容器内),执行命令:

    ldapsearch -x -H ldap://{ldap stuff} -b "cn=你的CA条目DN" cACertificate | grep -v "^#" | grep -v "^dn:" | base64 -d > ca.crt
    

    替换命令中的{ldap stuff}和cn=你的CA条目DN为实际LDAP地址与CA条目标识。

  • 合并证书并修改Nginx配置
    将服务器证书与CA证书合并成完整链:

    cat sigend.crt ca.crt > fullchain.crt
    

    修改Nginx配置中的证书路径:

    ssl_certificate /etc/ssl/certs/fullchain.crt;
    

    重启Nginx后,服务端会同时返回服务器证书和CA根证书,客户端可完成信任链验证。

2. 客户端直接信任CA证书

如果无法修改Nginx配置,可将提取到的ca.crt安装到客户端信任存储:

  • Linux:将证书复制到/usr/local/share/ca-certificates/,执行update-ca-certificates
  • Windows:双击证书文件,选择“安装证书”,存入“受信任的根证书颁发机构”
  • 浏览器:在证书设置中导入CA证书到信任根目录

3. (可选)Docker容器内安装LDAP工具

若需要在容器内调试LDAP操作,可自定义Nginx镜像:
创建Dockerfile:

FROM nginx:latest
RUN apt-get update && apt-get install -y ldap-utils && rm -rf /var/lib/apt/lists/*

构建镜像后运行,容器内即可使用ldapsearch等工具,但这仅用于调试,无法直接解决客户端信任问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 13:20:31