峡谷的老六 2023-07-25 16:47 采纳率: 33.3%
浏览 8

containerd连接ssl的harbor提示证书不被信任

我使用docker-compose部署的harbor镜像仓库,nerdctl可以正常访问,只需要把域名开头的crt证书写入到/etc/pki/tls/certs/ca-bundle.crt文件即可,如:

[root@node02 certs.d]# chmod 644 /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
[root@node02 certs.d]# cat /app/harbor/certs.d/core.harbor.domain.crt >> /etc/pki/tls/certs/ca-bundle.crt
[root@node02 certs.d]# chmod 444 /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem

[root@node02 certs.d]# nerdctl login -u admin -p Harbor12345 https://core.harbor.domain
WARN[0000] WARNING! Using --password via the CLI is insecure. Use --password-stdin. 
Login Succeeded
[root@node02 certs.d]# 

但是我在k8s上使用helm部署的harbor,nerdctl就访问不了,两者创建的证书的命令完全一致,且也进行了上述将证书添加到可信的操作,每次都提示证书不被信任。

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-07-25 18:08
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:
    • 以下回答由chatgpt基于相关博客总结生成:

      解决 Kubernetes 中使用 Helm 部署的 Harbor 无法连接到 SSL 的 Harbor,并提示证书不被信任问题

      这个问题的原因是在 Kubernetes 中使用 Helm 部署的 Harbor 无法信任证书,可能是因为证书链不完整或者是配置问题。

      下面是一些可能的解决方案:

      1. 确保证书链完整

      2. 检查在 Helm 部署 Harbor 时使用的证书是否是完整的证书链。可以通过自签名证书生成工具(如 OpenSSL)生成完整的证书链。

      3. 请确保 Harbor 使用的证书包含所有必需的中间和根证书,以便客户端可以正确验证证书。

      4. 验证 Harbor 配置

      5. 检查 Helm 安装 Harbor 时提供的配置参数,确保使用了正确的证书路径和证书文件名。

      6. 检查 Harbor 的 Ingress 配置是否正确,并且证书文件名与实际证书文件名匹配。

      7. 添加证书到 Kubernetes 信任证书池中

      8. 使用 kubectl 命令创建 Kubernetes Secret,将证书添加到信任证书池中。可以使用以下命令将证书添加到 Secret 中:

      shell kubectl create secret generic harbor-cert --from-file=/app/harbor/certs.d/core.harbor.domain.crt

      • 确保 Secret 的名称和路径与实际证书文件匹配。

      • 然后,在 Harbor 的 Deployment 或 Pod 的 YAML 文件中,将上面创建的 Secret 挂载到容器的某个目录(例如 /etc/ssl/certs)。

      yaml ... spec: volumes: - name: harbor-cert secret: secretName: harbor-cert containers: - name: harbor volumeMounts: - name: harbor-cert mountPath: /etc/ssl/certs readOnly: true ...

      • 这样,容器在启动时将自动加载加入到 Kubernetes 信任证书池中的证书。

      • 使用特定的证书信任配置

      • 检查 Nerdctl 的证书信任配置。可以尝试将 Harbor 证书的路径配置添加到 Nerdctl 的证书信任配置文件中。

      • 根据 Nerdctl 的文档,可以在以下位置创建 Nerdctl 的配置文件:

      shell ~/.config/nerdctl/config.toml

      • 在该文件中添加以下内容:

      toml [plugins."io.containerd.grpc.v1.cri".registry.configs."core.harbor.domain".tls] ca_file = "/path/to/core.harbor.domain.crt"

      • 确保路径 /path/to/core.harbor.domain.crt 是正确的 Harbor 证书路径。

      如果以上解决方案都不能解决问题,请尝试生成一个全新的可信证书,并在 Harbor 部署时使用该证书,确保证书链完整和正确。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 7月25日

悬赏问题

  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 unity第一人称射击小游戏,有demo,在原脚本的基础上进行修改以达到要求
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)