Ubuntu 上如何列出系统信任的所有 CA 证书?

系统 CA 证书合集在 /etc/ssl/certs/ca-certificates.crt;用 awk + openssl 逐张列出 subject;单张查看用 openssl x509 -text;查看某网站实际发来的证书链用 openssl s_client -showcerts。本文给出命令。

最佳实践
Ubuntu 上如何列出系统信任的所有 CA 证书?封面

列表命令:系统的 CA 信任库合集文件在 /etc/ssl/certs/ca-certificates.crt(多张证书拼接的 PEM 文件)。逐张打印 subject 的一行流:

awk -v cmd='openssl x509 -noout -subject' \
  '/BEGIN/{close(cmd)};{print | cmd}' < /etc/ssl/certs/ca-certificates.crt

其他常用查看方式

# 目录视图(每张证书一个软链)
ls /etc/ssl/certs/ | head -20

# 查看某一张的完整信息(有效期、签发者、指纹)
openssl x509 -in /etc/ssl/certs/ISRG_Root_X1.pem -noout -text | less

# 只看有效期
openssl x509 -in /etc/ssl/certs/xxx.pem -noout -dates

查看服务器实际发来的证书链

排查"系统里有根证书但还是报不受信"时,问题常在服务端没发中间证书。看对方实际发来的链:

openssl s_client -showcerts -connect example.com:443 </dev/null

输出里 Certificate chain 一节列出服务端发来的每一张;缺中间证书就要在服务端补 fullchain。

增删自定义 CA

# 添加企业内网 CA
sudo cp my-ca.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates

# 删除:从该目录移除后再 update-ca-certificates --fresh

观测云对照

证书问题的另一面是拨测视角。 观测云拨测从外部验证 HTTPS 握手与证书链完整性,与服务器端日志互补——客户端看到的证书问题(链不全、过期)第一时间告警。

常见问题(FAQ)

Q:ca-certificates.crt 和 /etc/ssl/certs/ 目录什么关系?
A:目录里是逐张证书(软链),.crt 合集是它们的拼接版,多数程序用合集,部分(如某些 Java 应用)用目录。

Q:更新 CA 列表的包叫什么?
A:ca-certificates 包,sudo apt install --reinstall ca-certificates 可修复损坏的信任库。

Q:Java 应用不认系统 CA?
A:Java 用自己的 keystore(cacerts),需用 keytool 单独导入企业 CA。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台