CentOS HTTPS自签证书访问失败问题的排查与解决全流程

sudo cp harbor.crt /usr/local/share/ca-certificates/sudo yum install -y ca-certificatessudo update-ca-trust force-enablesudo update-ca-trust extract

但是访问 https://172.16.20.20 仍然报错 * About to connect() to 172.16.20.20 port 443 (#0) * Trying 172.16.20.20... * Connected to 172.16.20.20 (172.16.20.20) port 443 (#0) * Initializing NSS with certpath: sql:/etc/pki/nssdb * CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: none * Server certificate: * subject: CN=registry-1.docker.io,L=NanJing,ST=JiangSu,C=CN * start date: Dec 20 08:54:50 2024 GMT * expire date: Nov 26 08:54:50 2124 GMT * common name: registry-1.docker.io * issuer: CN=registry-1.docker.io,L=NanJing,ST=JiangSu,C=CN * NSS error -8156 (SEC_ERROR_CA_CERT_INVALID) * Issuer certificate is invalid. * Closing connection 0 curl: (60) Issuer certificate is invalid. More details here: http://curl.haxx.se/docs/sslcerts.html curl performs SSL certificate verification by default, using a "bundle" of Certificate Authority (CA) public keys (CA certs). If the default bundle file isn't adequate, you can specify an alternate file using the --cacert option. If this HTTPS server uses a certificate signed by a CA represented in the bundle, the certificate verification probably failed due to a problem with the certificate (it might be expired, or the name might not match the domain name in the URL). If you'd like to turn off curl's verification of the certificate, use the -k (or --insecure) option.

根据你提供的信息,问题可能出在以下几个方面:

问题分析

  1. 证书未正确安装: 证书复制到了 /usr/local/share/ca-certificates 后,需要更新 CA 信任链,但可能存在以下问题:

    • 文件扩展名需为 .crt 才能被正确识别。
    • sudo update-ca-trust extract 是否成功执行。
  2. 证书的域名或 IP 不匹配: 你的证书的 common name (CN) 为 registry-1.docker.io,而你尝试访问的是 https://172.16.20.20,域名和 IP 不匹配可能导致证书验证失败。

  3. 证书链不完整或签发机构问题: 如果证书的签发机构未被系统信任,或证书链中缺少中间证书,也会导致 SEC_ERROR_CA_CERT_INVALID 错误。

  4. NSS 库的问题: CentOS 使用 NSS 库验证证书,可能存在特定配置导致问题。[最终确定是这个问题, 最后一步解决了此问题]


解决步骤

1. 确保证书正确安装

执行以下命令:

sudo cp harbor.crt /etc/pki/ca-trust/source/anchors/
sudo update-ca-trust extract

这会将证书添加到系统信任链。

然后检查证书是否已被信任:

openssl x509 -in harbor.crt -text -noout
sudo grep "subject=" /etc/pki/tls/certs/ca-bundle.crt | grep "CN=registry-1.docker.io"

如果找不到对应的 CN 信息,说明证书未正确安装。


2. 使用正确的域名访问

修改 /etc/hosts 文件,将域名指向 IP 地址,确保域名和证书匹配:

sudo vi /etc/hosts

添加以下内容:

172.16.20.20  registry-1.docker.io

然后重新访问:

curl https://registry-1.docker.io

3. 检查证书链

验证证书的完整性:

openssl verify -CAfile harbor.crt harbor.crt

如果提示证书链不完整,可能需要下载并合并中间证书。例如:

cat harbor.crt intermediate.crt > fullchain.crt

然后重新复制到 /etc/pki/ca-trust/source/anchors/ 并更新信任链。


4. 调试和验证

尝试使用 curl 调试:

curl -v --cacert harbor.crt https://172.16.20.20

如果继续失败,可以临时使用 -k 忽略验证(仅供测试):

curl -k https://172.16.20.20

5. 检查 NSS 数据库

如果问题依旧,可以重置 NSS 数据库:

sudo mv /etc/pki/nssdb /etc/pki/nssdb_bak
sudo rm -rf /etc/pki/nssdb
sudo mkdir /etc/pki/nssdb
sudo certutil -N -d sql:/etc/pki/nssdb
sudo certutil -A -d sql:/etc/pki/nssdb -n "harbor" -t "C,," -i harbor.crt

验证 NSS 配置:

cat harbor.crt harbor.key > harbor.pemcurl --cert harbor.pem https://172.16.20.20

通过以上步骤,问题应能解决。如果仍然报错,可以提供更多详细日志或上下文以便进一步分析。

如果还是解决不了问题, 使用 curl-config --ca 查看使用哪个路径的证书, 或者使用 curl https://172.16.20.20 --verbose 查看调用证书的路径明细, 直接将我们的证书写入实际使用的证书即可, 比如 实际使用的证书路径是 /etc/ssl/certs/ca-certificates.crt

那么使用如下命令追加证书

cat harbor.crt >> /etc/ssl/certs/ca-certificates.crt

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/64895.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PostgreSQL数据库访问限制详解

pg_hba.conf 文件是 PostgreSQL 数据库系统中非常重要的一个配置文件,它用于定义哪些用户(或客户端)可以连接到 PostgreSQL 数据库服务器,以及他们可以使用哪些认证方法进行连接。 pg_hba.conf 的名称来源于 "Host-Based Aut…

Tool之Excalidraw:Excalidraw(开源的虚拟手绘风格白板)的简介、安装和使用方法、艾米莉应用之详细攻略

Tool之Excalidraw:Excalidraw(开源的虚拟手绘风格白板)的简介、安装和使用方法、艾米莉应用之详细攻略 目录 Excalidraw 简介 1、Excalidraw 的主要特点: Excalidraw 安装和使用方法 1、Excalidraw的安装 T1、使用 npm 安装: T2、使用 …

【蓝桥杯选拔赛真题96】Scratch风车旋转 第十五届蓝桥杯scratch图形化编程 少儿编程创意编程选拔赛真题解析

目录 scratch风车旋转 一、题目要求 编程实现 二、案例分析 1、角色分析 2、背景分析 3、前期准备 三、解题思路 1、思路分析 2、详细过程 四、程序编写 五、考点分析 六、推荐资料 1、入门基础 2、蓝桥杯比赛 3、考级资料 4、视频课程 5、python资料 scratc…

奇怪问题| Chrome 访问csdn 创作中心的时候报错: 服务超时,请稍后重试

Chrome 访问csdn 创作中心的时候报错: 服务超时,请稍后重试用无痕浏览器可以正常访问 关闭代理无效清缓存和Cookies无效。考虑无痕浏览器模式下插件不生效,尝试把chrome 插件也禁用,发现有效,是该扩展程序的缘故

B2HGraphicBufferProducer和H2BGraphicBufferProducer

在 Android 的图形系统中,B2HGraphicBufferProducer 和 BnGraphicBufferProducer 是基于 Binder 机制的两个重要组件,它们负责图形缓冲区的生产接口。二者关系可以理解为 桥接和实现分离,以下是详细说明: 1. B2HGraphicBufferProd…

sentinel学习笔记7-熔断降级

本文属于sentinel学习笔记系列。网上看到吴就业老师的专栏,写的好值得推荐,我整理的有所删减,推荐看原文。 https://blog.csdn.net/baidu_28523317/category_10400605.html 限流需要我们根据不同的硬件条件做好压测,不好准确评估…

记录--uniapp 安卓端实现录音功能,保存为amr/mp3文件

🧑‍💻 写在开头 点赞 收藏 学会🤣🤣🤣 功能实现需要用到MediaRecorder、navigator.mediaDevices.getUserMedia、Blob等API,uniapp App端不支持,需要借助renderjs来实现 实现逻辑 通过naviga…

步进电机位置速度双环控制实现

步进电机位置速度双环控制实现 野火stm32电机教学 提高部分-第11讲 步进电机位置速度双环控制实现(1)_哔哩哔哩_bilibili PID模型 位置环作为外环,速度环作为内环。设定目标位置和实际转轴位置的位置偏差,经过位置PID获得位置期望,然后讲位置期望(位置变化反映了转轴的速…

myexcel的使用

参考: (1)api文档:https://www.bookstack.cn/read/MyExcel-2.x/624d8ce73162300b.md (2)源代码: https://github.com/liaochong/myexcel/issues 我: (1)m…

MySQL 8.0:explain analyze 分析 SQL 执行过程

介绍 MySQL 8.0.16 引入一个实验特性:explain formattree ,树状的输出执行过程,以及预估成本和预估返 回行数。在 MySQL 8.0.18 又引入了 EXPLAIN ANALYZE,在 formattree 基础上,使用时,会执行 SQL &#…

事务、管道

目录 事务 相关命令 悲观锁 乐观锁 管道 实例 Pipeline与原生批量命令对比 Pipeline与事物对比 使用Pipeline注意事项 事务 相关命令 命令描述discard取消事务,放弃执行事务块内的所有命令exec执行所有事务块内的事务(所有命令依次执行&#x…

list的常用操作

list的介绍 list是序列容器,它允许在常数范围O(1)进行插入和删除在这段序列的任意位置,并且可以双向遍历 它是弥补vector容器的缺点,与vector有互补的韵味, 这里我们可以将其进行与vector进行对比 vect…

机器人角度参考方式

机器人的角度可以根据需求和系统设计来决定。通常情况下,机器人角度(如航向角或偏航角)有两种常见的参考方式: 参考开机时的 0:这是最常见的方式,机器人在开机时会将当前的方向作为 0(即参考方向…

Go语言封装Cron定时任务

Go语言封装Cron定时任务 介绍目标项目背景代码分析代码实现主要功能 Cron表达式解析例子 使用示例总结 介绍 在现代应用中,定时任务是非常常见的需求,无论是用于定时清理数据、定时发送邮件,还是定时执行系统维护任务。Go语言作为一门现代编…

3.4 stm32系列:定时器(PWM、定时中断)

一、定时器概述 1.1 软件定时原理 使用纯软件(CPU死等)的方式实现定时(延时)功能; 不精准的延迟: /* 微秒级延迟函数* 不精准* stm32存在压出栈过程需要消耗时间* 存在流水线,执行时间不确定…

28、论文阅读:基于像素分布重映射和多先验Retinex变分模型的水下图像增强

A Pixel Distribution Remapping and Multi-Prior Retinex Variational Model for Underwater Image Enhancement 摘要介绍相关工作基于模型的水下图像增强方法:无模型水下图像增强方法:基于深度学习的水下图像增强方法: 论文方法概述像素分布…

【路径规划】原理及实现

路径规划(Path Planning)是指在给定地图、起始点和目标点的情况下,确定应该采取的最佳路径。常见的路径规划算法包括A* 算法、Dijkstra 算法、RRT(Rapidly-exploring Random Tree)等。 目录 一.A* 1.算法原理 2.实…

java web springboot

0. 引言 SpringBoot对Spring的改善和优化,它基于约定优于配置的思想,提供了大量的默认配置和实现 使用SpringBoot之后,程序员只需按照它规定的方式去进行程序代码的开发即可,而无需再去编写一堆复杂的配置 SpringBoot的主要功能…

transformer用作分类任务

系列博客目录 文章目录 系列博客目录1、在手写数字图像这个数据集上进行分类1. 数据准备2. 将图像转化为适合Transformer的输入3. 位置编码4. Transformer编码器5. 池化操作6. 分类头7. 训练8. 评估总结流程:相关模型: 1、在手写数字图像这个数据集上进行…

实验四 综合数据流处理-Storm (单机和集群配置部分)

1.前期准备 (1)把docker和docker-compose给下载好 参考:基于docker-compose来搭建zookeeper集群-CSDN博客(注意对于这篇文章下面配置zookeeper的内容,可以直接跳过,因为我们只需要看最上面下载docker-com…