一文解剖centos,curl,nss更新根证书的细节

栏目: 服务器 · 发布时间: 7年前

内容简介:这篇文章是《一文解剖ubuntu,curl,openssl更新根证书的细节》的姐妹篇,主要描述在 CentOS 系统中基于 NSS 的 SSL 客户端(比如 curl)是如何更新根证书的(这段话请仔细理解)。其实在 CentOS 中,如果基于 Yum 包安装,基于 OpenSSL 库的应用程序和基于 NSS 库的应用程序使用的证书路径是一样的,默认其引用的根证书集合文件都是 /etc/pki/tls/certs/ca-bundle.crt。什么是集合文件呢,和 Ubuntu 中的 /etc/ssl/cert

这篇文章是《一文解剖ubuntu,curl,openssl更新根证书的细节》的姐妹篇,主要描述在 CentOS 系统中基于 NSS 的 SSL 客户端(比如 curl)是如何更新根证书的(这段话请仔细理解)。

顺藤摸瓜找到 ca-certificates

其实在 CentOS 中,如果基于 Yum 包安装,基于 OpenSSL 库的应用程序和基于 NSS 库的应用程序使用的证书路径是一样的,默认其引用的根证书集合文件都是 /etc/pki/tls/certs/ca-bundle.crt。

什么是集合文件呢,和 Ubuntu 中的 /etc/ssl/certs/ca-certificates.crt 文件一样,ca-bundle.crt 文件包含了所有的 CA 根证书。

通过下列命令查看 OpenSSL 默认引用的根证书集合文件:

$ openssl version -a 

    OPENSSLDIR: "/etc/pki/tls"

通过下列命令查看 Curl 默认引用的根证书集合文件:

$curl-config  --ca

    /etc/pki/tls/certs/ca-bundle.crt

现在的关键就是 /etc/pki/tls/certs/ca-bundle.crt 是谁更新的?和 Ubuntu 一样,该文件也是由 ca-certificates 包提供的(但两者的运作模式完全不一样,只是包名相同)。

深究 ca-certificates

运行如下命令了解 ca-certificates 包的详细信息:

$ yum info  ca-certificates

关键输出如下:

The Mozilla CA root certificate bundle
http://www.mozilla.org/

这个包是由 Mozilla 官方提供的,可见 CentOS 极力使用 Mozilla 的 NSS 密码学库,才让 Mozilla 如此重视。

可能有的同学很奇怪了,在 CentOS 系统下,Curl 既然使用 NSS 密码学库,为什么不使用 cert9.db 文件呢?其实很多使用 NSS 密码学库的应用程序(除了 Firefox)很少直接使用 cert9.db,转而使用集成的 pem 证书文件 ca-bundle.crt。

如果本机没有安装 ca-certificates,运行下列命令即可:

$ yum install ca-certificates

看看该包安装那些文件,运行下列命令:

$ rpm-ql ca-certificates

最主要的类型文件包括:

(1)/etc/pki/tls/certs/ca-bundle.crt

和 Ubuntu 的 ca-certificates 包不一样,安装的文件只有一个集合文件,每个 CA 机构的根证书没有单独的文件

(2)/usr/bin/update-ca-trust

这个命令行 工具 的作用接下去讲解。

如何更新 CA 根证书

(1)mk-ca-bundle.pl 动态更新

如果 Mozilla 维护的 CA 根证书列表发生了变化,而 ca-certificates 包的更新可能滞后,那么可以使用 mk-ca-bundle.pl 工具快速更新。

具体命令如下:

$ wget master/lib/mk-ca-bundle.pl -o /etc/ssl/certs/ca-certificates.crt

$ chmod 0777 mk-ca-bundle.pl

$ ./mk-ca-bundle.pl

$ cp grep ca-bundle.crt  /etc/pki/tls/certs/ca-bundle.crt -fr

(2)通过 update-ca-trust 工具更新 Shared System CA Store

如果你有一个自签名证书,或者有一个私有 CA 根证书,想将其加入到本地 CA 根证书列表中,可以使用该工具。在《一文解剖ubuntu,curl,openssl更新根证书的细节》也没有说明如何更新自签名证书(或一个私有 CA 根证书),关于这个主题,自己打算以后再重点描述,相信很多人会感兴趣。

在本文和《一文解剖ubuntu,curl,openssl更新根证书的细节》这篇文章中,主要了解了如何将 Mozilla 的根证书同步给 OpenSSL 或者 NSS 库的本地根证书列表,从而基于它们的应用程序(比如 Curl)就可以使用本地根证书了。

可能很多同学很奇怪,为什么我最近写了很多 curl、nss 相关方面的文章?原因在于这些主题在我的新书《深入浅出HTTPS:从原理到实战》中描述的不多,也不系统,而这些主题同学们在工作、学习过程中有很大几率会用到,所以系统性的做一些介绍。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

简约至上

简约至上

[英] Giles Colborne / 李松峰、秦绪文 / 人民邮电出版社 / 2011-1-1 / 35.00

追求简单易用是人类的本性,无论是互联网产品。还是移动应用。亦或其他交互式设计,简单易用始终都是赢得用户的关键。同时,简单易用的程度也与产品寿命的长短密切相关。在《简约至上:交互式设计四策略》中,作者Giles托20多年交互式设计的探索与实践。提出了合理删除、分层组织、适时隐藏和巧妙转移这四个达成简约至上的终极策略,讲述了为什么应该站在主流用户一边,以及如何从他们的真实需求和期望出发,简化设计,提升......一起来看看 《简约至上》 这本书的介绍吧!

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具