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

如何解决子域调用主域Webhook时的证书域名不匹配错误?

问题根源分析

错误提示Hostname/IP does not match certificate's altnames: Host: exampledomain.com. is not in the cert's altnames: DNS:api.exampledomain.com的核心原因是:从api.exampledomain.com发起的主域请求,并没有真正发往Vercel服务器,而是被你的DigitalOcean服务器上的NGINX反向代理拦截,返回了api子域的SSL证书。

解决步骤

1. 修正NGINX服务器域名匹配规则

  • 打开api.exampledomain.com对应的NGINX配置文件(通常路径为/etc/nginx/sites-available/api.exampledomain.com或/etc/nginx/conf.d/api.conf)
  • 检查server_name配置,确保严格指向子域,避免泛域名匹配:
    server_name api.exampledomain.com;
    
    替换掉可能存在的server_name *.exampledomain.com;这类会覆盖主域的规则。
  • 重启NGINX生效:sudo systemctl restart nginx

2. 验证服务器DNS解析正确性

  • 在DigitalOcean服务器上执行以下命令,确认主域解析到Vercel的IP:
    nslookup exampledomain.com
    
  • 如果返回的是当前DigitalOcean服务器的IP,说明DNS解析异常:
    • 检查服务器/etc/hosts文件,确认没有错误绑定exampledomain.com到本地IP
    • 清空本地DNS缓存,例如Debian/Ubuntu系统执行:sudo systemd-resolve --flush-caches
    • 更换服务器DNS为公共DNS(如8.8.8.8),修改/etc/resolv.conf文件后生效

3. 测试服务器端请求链路

  • 在DigitalOcean服务器上直接发起请求,查看证书信息:
    curl -v https://exampledomain.com/api/revalidate
    
  • 查看输出中的证书部分,确认返回的是exampledomain.com的证书(SAN字段包含该域名),而非api子域的证书。如果仍返回api子域证书,说明NGINX或DNS的问题未解决。

4. 确认主域DNS配置正确性

  • 检查主域exampledomain.com的DNS记录,确保A/AAAA记录正确指向Vercel提供的IP地址,没有错误指向DigitalOcean服务器。
补充说明
  • 本地Postman调用正常:因为请求直接发往Vercel服务器,未经过DigitalOcean的NGINX拦截,能获取正确证书。
  • 子域调用webhook.site正常:请求发往第三方服务器,不会被自身NGINX规则匹配,所以链路正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 09:46:10