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

使用Harbor Registry登录Docker镜像时出现x509证书错误,如何解决?

解决Harbor Registry登录时的x509证书错误(CN字段过时问题)

这个错误是因为你的Harbor证书只使用了旧版的Common Name(CN)字段,而现代TLS要求必须使用Subject Alternative Names(SAN)来指定域名。以下是几种解决方法:

1. 重新生成包含SAN的SSL证书(推荐生产环境)

这是最规范的解决方案,步骤如下:

  • 创建证书配置文件(比如命名为harbor_csr.conf),指定SAN字段:
    [req]
    default_bits = 2048
    prompt = no
    default_md = sha256
    distinguished_name = dn
    req_extensions = req_ext
    
    [dn]
    C = CN
    ST = 你的省份
    L = 你的城市
    O = 你的组织名
    OU = 部门名
    CN = harbor.example.com  # 替换成你的Harbor域名
    
    [req_ext]
    subjectAltName = @alt_names
    
    [alt_names]
    DNS.1 = harbor.example.com  # 主域名
    DNS.2 = registry.example.com  # 可选,添加其他关联域名
    
  • 生成证书签名请求(CSR)和私钥:
    openssl req -new -nodes -keyout harbor.key -out harbor.csr -config harbor_csr.conf
    
  • 用CA签名证书(如果是自签名,用以下命令):
    openssl x509 -req -in harbor.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out harbor.crt -days 3650 -extensions req_ext -extfile harbor_csr.conf
    
    注:如果没有CA证书,也可以直接生成自签名证书,把上面命令中的-CA ca.crt -CAkey ca.key -CAcreateserial换成-signkey harbor.key。
  • 替换Harbor的证书:将新生成的harbor.crt和harbor.key放到Harbor默认证书目录/data/cert/(如果是自定义路径,对应修改harbor.yml中的配置),然后重启Harbor:
    docker-compose down
    docker-compose up -d
    
  • 客户端配置信任证书:将CA证书(ca.crt)复制到Docker的证书目录,比如/etc/docker/certs.d/harbor.example.com/ca.crt(目录不存在就创建),然后重启Docker服务:
    systemctl restart docker
    

2. 临时跳过证书验证(仅测试环境)

如果只是测试用,不想折腾证书,可以临时关闭Docker的证书验证:

  • 修改Docker daemon配置文件/etc/docker/daemon.json,添加 insecure-registries 配置:
    {
      "insecure-registries": ["harbor.example.com"]
    }
    
  • 重启Docker服务:
    systemctl restart docker
    
  • 现在可以正常登录Harbor了:
    docker login harbor.example.com
    
    警告:此方法会完全跳过证书验证,生产环境绝对禁止使用,存在中间人攻击风险。

3. 临时允许使用旧版CN字段(不推荐)

如果实在无法重新生成证书,Docker 20.10+版本可以通过修改配置强制允许使用CN字段,但这只是临时妥协,不建议长期使用:

  • 编辑Docker daemon配置文件,添加tls相关配置:
    {
      "tls": true,
      "tls-verify": false
    }
    
  • 重启Docker服务后尝试登录,或者直接在登录时加上--insecure参数:
    docker login --insecure harbor.example.com
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 07:00:56