JCR登录报错:remote error: tls: unrecognized name 求助
解决Docker登录JCR仓库的TLS认证错误
先看你遇到的错误:
docker login -u user -p pass123* 10.0.2.103:8082
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Error response from daemon: Get "https://localhost:port/v2/": remote error: tls: unrecognized name
核心问题有两个:一是Docker默认强制HTTPS访问私有仓库,二是请求被转发到localhost后,TLS证书域名不匹配。按以下步骤排查:
1. 把JCR仓库加入Docker的不安全列表
如果你的JCR是HTTP服务(未配置HTTPS),Docker会拒绝访问,需要手动添加例外:
- 编辑Linux下的
/etc/docker/daemon.json(Windows/macOS在Docker Desktop的「设置」→「Docker Engine」里编辑) - 写入配置:
{ "insecure-registries": ["10.0.2.103:8082"] } - 重启Docker服务:Linux执行
sudo systemctl restart docker,Windows/macOS直接在Docker Desktop里点重启按钮。
2. 修正反向代理或登录地址
错误里出现localhost:port,说明反向代理把请求转发到了本地,但证书的域名不是localhost,导致TLS验证失败:
- 检查反向代理配置,确保转发目标是
10.0.2.103:8082,且代理的TLS证书要包含你访问仓库的IP/域名(比如10.0.2.103) - 如果不用代理,直接用仓库IP登录,同时按提示用
--password-stdin避免明文输密码:echo "pass123*" | docker login -u user --password-stdin 10.0.2.103:8082
3. 验证JCR仓库是否正常运行
先跳过Docker,直接用curl测试仓库连通性:
curl http://10.0.2.103:8082/v2/
如果返回{"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":null}]},说明仓库服务没问题;如果连不上,先检查JCR容器的端口映射、运行状态,确保8082端口能正常访问。
4. 若用HTTPS,检查证书配置
如果JCR配了HTTPS,必须满足:
- 证书的CN或SAN字段包含
10.0.2.103(或者你用来访问仓库的域名) - 把CA证书放到Docker的信任目录:Linux下是
/etc/docker/certs.d/10.0.2.103:8082/ca.crt,Windows/macOS需要导入系统证书库。
内容的提问来源于stack exchange,提问作者Abhishek Chhabra
相关产品推荐
相关产品推荐

