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

Nginx配置SSL后Postman调用API报无法验证首个证书错误

问题根因

该报错由Nginx未返回完整SSL证书链导致。
现代浏览器内置AIA(证书权威信息访问)自动拉取逻辑,检测到服务端缺失中间证书时,会自动从证书内置的地址下载对应中间证书完成信任校验,因此访问无警告。但Postman、curl、绝大多数服务端SDK、旧版客户端均无该自动拉取能力,仅拿到服务端返回的单张叶子证书时,无法将证书链溯源到本地信任的根CA,就会抛出Unable to verify the first certificate错误。

修复步骤
  • 第一步:确认当前证书文件的内容
    在服务器执行如下命令,统计证书文件内的证书条目数:
    grep -c 'BEGIN CERTIFICATE' /etc/nginx/conf.d/ssl/******.crt
    
    如果返回值为1,即可确认文件内仅包含叶子证书,缺失中间证书。
  • 第二步:拼接完整证书链
    向证书颁发方索要对应域名的中间证书(也称CA链证书),将叶子证书、中间证书按从上到下的顺序拼接为同一个证书文件,顺序不可颠倒:
    -----BEGIN CERTIFICATE-----
    此处为你当前持有的叶子证书(原******.crt的完整内容)
    -----END CERTIFICATE-----
    -----BEGIN CERTIFICATE-----
    此处为证书颁发方提供的中间证书完整内容
    -----END CERTIFICATE-----
    
    你可以直接覆盖原******.crt文件,也可以将拼接后的内容另存为fullchain.crt。
  • 第三步:更新Nginx配置并生效
    如果选择另存全链证书文件,需要调整Nginx配置中的证书路径:
    ssl_certificate      /etc/nginx/conf.d/ssl/fullchain.crt; # 指向拼接后的全链证书
    ssl_certificate_key  /etc/nginx/conf.d/ssl/******.key;
    
    执行配置校验与重载命令让配置生效:
    nginx -t
    nginx -s reload
    
  • 第四步:验证配置有效性
    不要用浏览器验证,直接用openssl命令检测服务端返回的证书链长度,返回多个证书条目即为配置正确:
    openssl s_client -connect 你的服务域名:443 -showcerts
    
    验证通过后再用Postman发起请求,报错即可消除。
临时调试方案(禁止生产环境使用)

如果暂时无法获取中间证书,可以临时关闭Postman的SSL校验:打开Postman设置 -> General面板,关闭SSL certificate verification开关即可正常发起请求。该方式会跳过证书合法性校验,存在中间人攻击风险,仅可用于临时本地调试。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 12:21:21