证书与握手错误
拉镜像时报证书或握手错误:企业镜像源的证书链不受信、中间设备拦截了加密连接、私有仓库自签证书域名不匹配。先验证证书本身,再决定用什么方式收敛。
基本信息
| 诊断 | 用交互式工具查看证书链与域名匹配情况 |
|---|---|
| 内网可控场景 | 按仓库地址配置不校验的例外 |
| 对外场景 | 修证书链,不要降低校验 |
| 自签证书 | 把证书放到约定目录后重启守护进程 |
| 适用场景 | 企业内网镜像源与私有仓库 |
典型使用场景
- 内网镜像源换证书后拉取失败
- 公司网络里带审计设备导致握手异常
- 私有仓库自签证书域名不匹配时定位
- 新环境首次拉取镜像就报证书错误
- 评估是否可以用不校验方式临时绕过
查看证书与复现
查看证书与复现
openssl s_client -connect registry.example.com:443 \
-servername registry.example.com </dev/null 2>/dev/null \
| openssl x509 -noout -subject -issuer -dates # 查看签发者与有效期
docker pull registry.example.com/ns/app:1.0 # 复现拉取报错线索与处理方向
| 线索 | 原因 | 处理方向 |
|---|---|---|
| 证书链不受信 | 缺少中间证书或根证书 | 补齐证书链 |
| 域名不匹配 | 签发域名与访问域名不同 | 改用匹配的访问地址 |
| 握手被中断 | 中间设备拦截或重签名 | 装对审计链的根证书 |
| 仅内网失败 | 内网证书未纳入信任 | 按内网仓库规范配置 |
自签证书的规范做法是把对应证书放到约定目录后再重启守护进程。
跳过校验只是绕过检查,公网链路使用会引入镜像被替换的风险。
公司审计设备重签名证书时,装对审计链的根证书比关掉校验更正确。
证书有效期到期也会以握手失败的形式出现,排查时先看有效期。
同一台机器上不同仓库的证书信任配置互相独立,新增仓库时要单独核对。
排查时先用命令行工具确认证书本身是否正常,再看守护进程侧的信任配置,顺序清晰能少绕路。