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

Ubuntu Docker镜像及主机curl访问HTTPS URL遇SSL证书匹配错误

问题分析

近期在Ubuntu环境(含Docker容器及升级后的主机)中,curl访问部分HTTPS站点(如download.docker.com、objects.githubusercontent.com)时触发SSL: no alternative certificate subject name matches target host name 'download.docker.com'错误,但Firefox、wget、openssl s_client均可正常验证证书,且curl版本未发生变更。

解决办法

以下是无需使用--insecure参数或降级操作的可行方案:

  • 更新CA证书存储
    尽管已安装ca-certificates,证书存储可能未同步到最新状态,执行命令强制刷新:

    update-ca-certificates --fresh
    

    该命令会重新生成系统CA证书bundle,确保curl使用的证书列表完整且最新。

  • 强制指定CA证书路径
    若curl未正确加载系统默认CA证书,可显式指定证书文件路径:

    curl --cacert /etc/ssl/certs/ca-certificates.crt -I -vvv https://download.docker.com
    

    验证有效后,可将配置写入全局配置文件/etc/curl.conf或用户配置文件~/.curlrc,添加:

    cacert=/etc/ssl/certs/ca-certificates.crt
    

    后续curl请求将自动使用该证书bundle。

  • 排查DNS解析异常
    证书SAN匹配依赖正确的主机名解析,若DNS缓存或解析错误可能导致验证失败:

    1. 手动解析站点确认IP一致性:
      nslookup download.docker.com
      
    2. 若解析异常,刷新Ubuntu系统DNS缓存:
      systemctl restart systemd-resolved
      
  • 切换curl的SSL后端
    curl依赖的SSL后端(如OpenSSL、NSS)可能存在证书处理逻辑差异,先查看当前后端:

    curl -V
    

    若使用NSS后端,切换至OpenSSL版本:

    apt remove curl && apt install curl-openssl
    

    该操作仅切换SSL依赖库,不会降级curl版本,可解决部分兼容性问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 15:06:13