Harbor怎么配置自签名证书并在客户端顺利登录

轻浩姑娘_1323

轻浩姑娘_1323

2026-10-24

699人浏览

原创

harbor配置自签名证书后docker login失败,90%因证书路径、文件名或域名不匹配:证书须放于/etc/docker/certs.d/域名/下,文件名必须为ca.crt,且域名须与login命令及harbor.yml中hostname完全一致,同时需在/etc/hosts中正确映射域名到ip。

harbor怎么配置自签名证书并在客户端顺利登录

Harbor 配置自签名证书后,客户端 docker login 失败,90% 是证书路径、文件名或域名不匹配导致的,不是 Docker 服务没重启——绝大多数情况根本不需要重启。

证书必须放在 /etc/docker/certs.d/域名/ 目录下

Docker 客户端只认这个固定路径结构,且域名必须和 docker login 命令里用的一致(不能是 IP,不能带端口,不能大小写混用)。

  • 如果你用 docker login harbor.example.com,目录就得是 /etc/docker/certs.d/harbor.example.com/
  • 如果 Harbor 配置的是 www.harbor.mobi,那客户端也必须用这个域名登录,且目录名必须完全一致
  • 本地 /etc/hosts 必须提前映射好该域名到 Harbor 服务器 IP,否则 DNS 解析失败,连证书校验都进不去

ca.crt 文件名不能改,且必须是根 CA 证书

Docker 硬编码只读 ca.crt,其他名字(如 harbor-ca.crt、root.crt)全被忽略。

SurferSEO
SurferSEO

SurferSEO是一款面向 SEO 内容规划、写作和优化的 AI 内容平台。

下载
  • 确认你复制的是 Harbor 的根 CA 证书(即签发服务器证书的那个 CA),不是服务器自己的 .crt 或 .cert 文件
  • 执行命令时务必重命名: cp harbor-ca.crt /etc/docker/certs.d/harbor.example.com/ca.crt
  • 可以用 openssl x509 -in /etc/docker/certs.d/harbor.example.com/ca.crt -text -noout | head -10 检查是否为 CA 类型(输出里要有 CA:TRUE)

登录前先验证证书是否生效

别急着 docker login,先用 curl 测试底层 HTTPS 连通性和证书信任状态。

  • 运行 curl -v https://harbor.example.com/api/v2.0/health
  • 如果返回 SSL certificate problem: unable to get local issuer certificate,说明证书没放对位置或不是 CA 证书
  • 如果返回 HTTP/2 200 且有 {"status":"healthy"},说明证书已就绪,可以登录
  • 高版本 Docker(14+)默认强制 HTTPS,且拒绝 IP 访问,只认域名——这点最容易被忽略

登录命令本身要简洁,避免冗余参数

大多数报错源于多写了不该写的选项,或用了过时语法。

  • 推荐写法:docker login harbor.example.com -u admin -p Harbor12345
  • 不要加 --password-stdin 或 -p 后跟变量(容易被 shell 展开出错)
  • 如果密码含特殊字符(如 $、!),建议直接交互式输入,或用单引号包裹:-p 'Harbor@2026!'
  • 首次登录失败后,Docker 会缓存失败状态;可先执行 docker logout harbor.example.com 再试

最常被跳过的环节是:确认 Harbor 的 hostname 和客户端访问域名完全一致、证书是根 CA 而非服务端证书、ca.crt 名字一字不差。这三个点卡住,再怎么重启 Docker 也没用。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

2026.10.22

20

11

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

2026.10.22

0

10

Golangci-lint检查器使用教程
Golangci-lint检查器使用教程

本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。

2026.10.22

20

15

Gradle怎么构建Java项目
Gradle怎么构建Java项目

本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。

2026.10.22

0

10

PHP时间戳漏洞修复教程
PHP时间戳漏洞修复教程

本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。

2026.10.22

20

25

Golangci-lint配置文件与规则设置
Golangci-lint配置文件与规则设置

本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。

2026.10.22

0

15

Golangci-lint安装与入门教程
Golangci-lint安装与入门教程

本专题讲解Golangci-lint的安装、初始化、基础命令和首次代码检查,覆盖本地环境、Docker及多平台用法,帮助Go开发者快速上手。

2026.10.22

0

15

PHP2Shell高危漏洞修复教程
PHP2Shell高危漏洞修复教程

PHP2Shell漏洞是什么,哪些PHP版本和运行环境会受到影响,服务器应该如何检测与修复?本专题提供版本自查脚本、Linux与Docker升级命令、PHP-FPM和Apache排查步骤,以及修复验证、临时缓解和应急响应方案。

2026.10.22

80

12

剧云人物设定与关系管理教程
剧云人物设定与关系管理教程

本专题介绍剧云人物设定与关系管理,讲解角色小传、性格职业、人物目标、背景资料和关系网络的创建及维护方法。

2026.10.22

0

16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.9万人学习