type
status
date
slug
summary
category
tags
create_time
Apr 21, 2025 07:58 AM
icon
password
这是一篇我很早以前在github pages上面发布的文章,因为源码丢失已无法再发布更新了,所以直接迁移到自己的博客站。
🧩 问题描述
在通过上一篇文章:
部署好 Harbor 后,执行
docker login
时出现如下错误:
该错误提示表明,客户端在连接 Harbor 时,收到的 TLS 证书的主机名为
ingress.local
,而非预期的 harbor.lusyoe.com
,导致证书验证失败。🔍 原因分析
起初怀疑是 Cert-Manager 的问题,但经过多方排查,发现问题出在 Nginx Ingress Controller 的默认配置上。
当未显式指定默认的 TLS 证书时,Nginx Ingress Controller 会使用一个默认的自签名证书,该证书的主机名为
ingress.local
。因此,即使为特定的 Ingress 配置了正确的证书,Nginx Ingress Controller 仍可能返回默认证书,导致客户端验证失败。✅ 解决方案
为 Nginx Ingress Controller 指定默认的 TLS 证书,使其在未匹配到特定 Ingress 时,使用我们预先配置的有效证书。
1.修改 Nginx Ingress Controller 的配置
编辑 Nginx Ingress Controller 的
values.yaml
文件,添加以下参数:其中,
default/harbor-secret-tls
是包含有效 TLS 证书的 Kubernetes Secret 的命名空间和名称。请根据实际情况替换为相应的值。2.应用配置更改
如果是通过 Helm 部署的 Nginx Ingress Controller,执行以下命令应用配置更改:
3. 验证
配置更新后,重新执行
docker login
命令,验证是否仍然出现证书错误。如果配置正确,应该能够成功登录,而不会再出现证书错误。
🔚 总结
在使用 Cert-Manager 为 Harbor 签发 HTTPS 证书时,确保 Nginx Ingress Controller 正确配置默认的 SSL 证书,以避免返回默认的自签名证书导致的证书错误。
有关文章的任何疑问,欢迎您在底部评论区留言,一起交流~
如果文章对您有帮助,请我喝杯咖啡 赏你
- 作者:lusyoe
- 链接:https://blog.lusyoe.com/article/fix-harbor-certmanager-x509-ingress-error
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。