LINUX_添加根证书信任源

简介

某三方机构需要更换https证书,通知客户检测是否支持新证书加密算法,先给一个域名配置了新证书 客户在在自己服务端测试是否支持新证书

过程

在三方机构发送的邮件中包含证书和操作步骤,但操作步骤中的三个方法都是针对Java程序来进行操作的,没有针对系统的。而我们业务都是通过nginx反向代理去请求三方的,所以需要其他的方法。

SSL证书解析流程

推荐去下面的博文学习,下面内容就是从博文中拿出来的
HTTPS协议原理和流程分析

HTTPS协议原理和流程分析

如上图所示,在第 ② 步时服务器发送了一个SSL证书给客户端,SSL 证书中包含的具体内容有:
(1)证书的发布机构CA
(2)证书的有效期
(3)公钥
(4)证书所有者
(5)签名
………
客户端在接受到服务端发来的SSL证书时,会对证书的真伪进行校验,以浏览器为例说明如下:
(1)首先浏览器读取证书中的证书所有者、有效期等信息进行一一校验;
(2)浏览器开始查找操作系统中已内置的受信任的证书发布机构CA,与服务器发来的证书中的颁发者CA比对,用于校验证书是否为合法机构颁发;
(3)如果找不到,浏览器就会报错,说明服务器发来的证书是不可信任的;
(4)如果找到,那么浏览器就会从操作系统中取出 颁发者CA 的公钥,然后对服务器发来的证书里面的签名进行解密;
(5)浏览器使用相同的hash算法计算出服务器发来的证书的hash值,将这个计算的hash值与证书中签名做对比;
(6)对比结果一致,则证明服务器发来的证书合法,没有被冒充;
(7)此时浏览器就可以读取证书中的公钥,用于后续加密了;

所以通过发送SSL证书的形式,既解决了公钥获取问题,又解决了黑客冒充问题,一箭双雕,HTTPS加密过程也就此形成。
所以相比HTTP,HTTPS 传输更加安全:
(1) 所有信息都是加密传播,黑客无法窃听。
(2) 具有校验机制,一旦被篡改,通信双方会立刻发现。
(3) 配备身份证书,防止身份被冒充。

检测方法

通过 curl https://domain.com可以加上-v 查看具体流程信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
curl: (60) Peer's Certificate issuer is not recognized.

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.

通过curl的检测和上面的SSL的解析流程,我们能知道服务器中是缺少三方结构ssl证书的颁发者CA的根证书

解决方法

下述方法来自于博客https://blog.csdn.net/weixin_40006394/article/details/84790775?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control

在三方的邮件中没有CA的根证书,需要我们去下载并添加到服务器的信任证书列表中
通过浏览器访问域名 找到根证书位置


复制到文件后 用文本编辑器打开,复制其内容并追加到
/etc/pki/tls/certs/ca-bundle.crt文件中 再通过curl访问即可正常访问


LINUX_添加根证书信任源
https://imwang77.github.io/2021/02/01/Linux_添加根证书信任源/
作者
imwang77
发布于
2021年2月1日
更新于
2024年1月3日
许可协议