kk部署的harbor其他服务访问无法登陆:x509: certificate signed by unknown authority

本文介绍使用KK离线部署Harbor时遇到的登录访问失败问题及其解决方案。主要原因是未正确配置SSL证书,导致docker客户端无法验证私有仓库的证书权威性。文章提供了两种解决方法:一是通过docker配置禁用安全检查;二是正确安装和配置harbor证书。

1、场景

# 使用kk离线部署的harbor在其他服务上登陆访问失败:
 docker login -uxxxxx -pxxxxx dockerhub.kubekey.local
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Error response from daemon: Get "https://dockerhub.kubekey.local/v2/": x509: certificate signed by unknown authority (possibly because of "crypto/rsa: verification error" while trying to verify candidate authority certificate "registry-ca")

2、原因

kk部署的默认使用SSL协议添加了相关证书,docker访问私有仓库时需要添加相关配置(https还需要配置证书)

3、解决办法

  1. docker配置

docker启动命令后添加参数/etc/systemd/system/docker.service

--insecure-registry dockerhub.kubekey.local

在这里插入图片描述

  1. 证书配置

将harbor服务上的harbor相关证书复制一份到目标服务器上/etc/docker/certs.d/dockerhub.kubekey.local/

在这里插入图片描述

在 Rancher 中遇到 `x509: certificate signed by unknown authority` 错误通常表示 Rancher 或其代理组件无法验证目标服务器的 TLS 证书。这种情况常见于使用自签名证书或私有 CA 签发的证书时。 以下是一些可能的解决方案,具体取决于问题发生的场景: ### 1. 将自签名证书添加到信任链 如果 Rancher 需要连接的服务(如 Kubernetes 集群、镜像仓库 Harbor 等)使用的是自签名证书,则需要将该证书导入到 Rancher 所在节点的操作系统信任库中。 ```bash # 假设证书文件为 /etc/kubernetes/ssl/cert.pem cp cert.pem /etc/pki/ca-trust/source/anchors/ update-ca-trust ``` 在 Docker 容器环境中运行的 Rancher 可能也需要更新其容器内的证书信任库[^3]。 ### 2. 在 Rancher 启动参数中指定额外的 CA 证书 Rancher 支持通过配置项将额外的 CA 证书注入到其信任链中。可以在部署 Rancher 时通过 Helm Chart 的 `additionalTrustedCAs` 参数启用此功能,并挂载相应的证书文件。 Helm 安装示例: ```yaml # values.yaml additionalTrustedCAs: true privateCA: | -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE----- ``` 然后执行安装命令: ```bash helm install rancher rancher-stable/rancher --namespace cattle-system --create-namespace -f values.yaml ``` ### 3. 检查 Rancher Agent 的证书信任 如果问题是出现在 Rancher agent 组件与 Rancher server 之间的通信中,可以尝试重新注册集群并确保 agent 容器信任相关证书。这可以通过在集群注册时手动注入证书或使用 Rancher 提供的注册脚本进行调整实现[^4]。 ### 4. 使用 Ingress 配置 TLS 证书 如果 Rancher 是通过 Ingress 对外暴露服务,则需确保 Ingress 控制器配置了正确的 TLS 证书。否则客户端(如浏览器或 kubectl)可能会因证书不被信任而拒绝连接。 Nginx Ingress 示例配置: ```yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: rancher-ingress namespace: cattle-system spec: tls: - hosts: - rancher.example.com secretName: tls-rancher-ingress rules: - host: rancher.example.com http: paths: - path: / pathType: Prefix backend: service: name: rancher port: number: 443 ``` ### 5. 调整 Rancher 的代理设置(如适用) 在某些企业网络环境中,所有出站请求必须经过代理。此时应正确配置 Rancher 的代理环境变量(HTTP_PROXY、HTTPS_PROXY 和 NO_PROXY),以避免因中间拦截导致的证书验证失败问题。 Docker 启动示例: ```bash docker run --privileged -d --restart=unless-stopped \ -e HTTP_PROXY="http://proxy.example.com:3128" \ -e HTTPS_PROXY="http://proxy.example.com:3128" \ -e NO_PROXY="localhost,127.0.0.1,.example.com" \ rancher/rancher:latest ``` ### 6. 更新 Rancher 与 Kubernetes 版本 有时证书问题可能是由于软件版本过旧导致的兼容性问题。建议升级至最新稳定版本,以获得更好的安全性和兼容性支持[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值