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,一经查实,立即删除!

相关文章

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 插件也禁用,发现有效,是该扩展程序的缘故

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获得位置期望,然后讲位置期望(位置变化反映了转轴的速…

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…

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的主要功能…

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

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

前端开发 之 12个鼠标交互特效下【附完整源码】

前端开发 之 12个鼠标交互特效下【附完整源码】 文章目录 前端开发 之 12个鼠标交互特效下【附完整源码】七:粒子烟花绽放特效1.效果展示2.HTML完整代码 八:彩球释放特效1.效果展示2.HTML完整代码 九:雨滴掉落特效1.效果展示2.HTML完整代码 十…

Java设计模式 —— 【结构型模式】外观模式详解

文章目录 概述结构案例实现优缺点 概述 外观模式又名门面模式,是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口,外部应用程序不用关心内部子系统的具体的细节,这…

基于Springboot + vue实现的汽车资讯网站

🥂(❁◡❁)您的点赞👍➕评论📝➕收藏⭐是作者创作的最大动力🤞 💖📕🎉🔥 支持我:点赞👍收藏⭐️留言📝欢迎留言讨论 🔥🔥&…

Html:点击图标链接发起QQ临时会话

我们在做前端开发的时候&#xff0c;会遇到用户需要点击一个图标可以发起QQ临时会话&#xff0c;这样不用添加好友也能沟通的&#xff0c;那我们就来看看如何实现这个功能&#xff1a; <a href"http://wpa.qq.com/msgrd?v3&uin你的QQ号码&siteqq&menuyes…

echarts画风向杆

1.安装echarts 2.引入echarts 4.获取数据&#xff0c;转换数据格式 windProfile.title.text ${moment(time.searchTime[0], ‘YYYY-MM-DD HH:mm:ss’).format( ‘YYYY-MM-DD HH:mm’ )}-${moment(time.searchTime[1], ‘YYYY-MM-DD HH:mm:ss’).format(‘YYYY-MM-DD HH:mm’)…

Linux系统编程——理解系统内核中的信号捕获

目录 一、sigaction() 使用 信号捕捉技巧 二、可重入函数 三、volatile关键字 四、SIGCHLD信号 在信号这一篇中我们已经学习到了一种信号捕捉的调用接口&#xff1a;signal(),为了深入理解操作系统内核中的信号捕获机制&#xff0c;我们今天再来看一个接口&#xff1a;si…