Lazy loaded image
Lazy loaded image解决 Harbor + Cert-Manager 出现 ingress-nginx x509: certificate is valid for ingress.local 错误
字数 595阅读时长 2 分钟
2025-4-21
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 证书,以避免返回默认的自签名证书导致的证书错误。
 
💡
有关文章的任何疑问,欢迎您在底部评论区留言,一起交流~
如果文章对您有帮助,请我喝杯咖啡 赏你
上一篇
Cert-Manager自动化Harbor HTTPS证书签发
下一篇
解决Jenkins+Gitlab出现的Permission denied权限问题

评论
Loading...