找出Ubuntu内置那些CA证书
在 Linux 安全领域,证书机构(CAs)作为可信的第三方,负责验证网站、服务器和客户端的身份。Ubuntu 预装了一组可信的根证书,但了解如何检查、验证和检查这些证书是系统管理员和开发人员的一项关键技能。本指南涵盖了 CA 证书的存储位置、如何列出它们以及如何使用标准命令行工具验证其有效性。
2025.10 山西·阳泉·娘子关镇
CA 证书存储在哪里?
在 Ubuntu(以及大多数基于 Debian 的系统)中,受信任的 CA 证书存储在几个特定的位置:
- **
/etc/ssl/certs/**:这是 OpenSSL 和其他应用程序查找受信任证书的主要目录。它包含单个证书文件和指向实际证书的符号链接(通常以哈希值命名)。 /etc/ssl/certs/ca-certificates.crt:这是一个单个连接文件 ,包含系统上所有受信任的 CA 证书。许多应用程序(如 Python requests 或 curl)使用此特定文件,而不是扫描整个目录。- **
/usr/share/ca-certificates/**:此目录存放由ca-certificates软件包提供的原始证书文件。
列出所有已安装的 CA 证书
由于主包是一个单一文件,您不能简单地“读取”它来查看名称列表。但是,您可以使用 awk 和 openssl 从包中的每个证书中提取“Subject”(组织名称)。
在您的终端中运行以下命令:
1 | awk -v cmd='openssl x509 -noout -subject' '/BEGIN/{close(cmd)};{print | cmd}' < /etc/ssl/certs/ca-certificates.crt |
这是做什么的:
- 它读取包文件
/etc/ssl/certs/ca-certificates.crt。 - 它将文件分割为单个证书(由
BEGIN分隔)。 - 它将每个证书通过管道传输到
openssl以提取并打印 Subject 行。
您将看到类似以下的输出:
1 | subject= /C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert Global Root CA |
检查特定证书
如果您想检查特定的 CA(例如“Let’s Encrypt”或企业内部 CA)是否当前被您的系统信任,您可以使用 grep 来搜索证书包。
按名称搜索
验证“ISRG Root X1”(Let’s Encrypt 的根证书)是否受信任:
1 | grep -i "ISRG Root X1" /etc/ssl/certs/ca-certificates.crt |
- 如果返回文本 :证书名称存在于包中。
- 如果返回为空 :证书可能未安装或未被信任。
通过文件搜索
如果你有一个特定的证书文件(例如,my-cert.pem),并想检查其详细信息,请使用 openssl:
1 | openssl x509 -in my-cert.pem -text -noout |
in: 输入文件。text: 以纯文本形式打印证书详细信息(有效期、颁发者、主题等)。noout: 防止输出编码的证书本身。
验证服务器证书与 CA 存储库
有时候问题不在于证书本身,而在于你的系统是否信任远程服务器。你可以使用 openssl s_client 工具来测试这一点。
要检查你的 Ubuntu 系统是否信任 google.com:
1 | openssl s_client -connect google.com:443 -CAfile /etc/ssl/certs/ca-certificates.crt |
分析输出:
- 查找输出末尾的验证返回码 。
- 成功:
验证返回码: 0 (ok)— 这意味着您的系统信任了为 Google 证书签名的 CA。 - 失败:
Verify return code: 19 (self signed certificate in certificate chain)或类似错误表示存在信任问题。
如何添加新的自定义 CA 证书
如果您需要信任一个自定义的 CA(例如,用于公司内部网络或本地开发环境),您不应该手动编辑 /etc/ssl/certs 文件。相反,应该使用 update-ca-certificates 工具。
- 将您的证书 (必须为
.crt扩展名)复制到共享文件夹:sudo cp my-custom-ca.crt /usr/local/share/ca-certificates/ - 更新证书存储库 :
sudo update-ca-certificates
你应该看到输出表明已添加1个证书。这会自动更新 /etc/ssl/certs/ca-certificates.crt 并创建必要的符号链接。
摘要命令表
| 操作 | 命令 |
|---|---|
| 列出所有 CA 主题 | awk -v cmd='openssl x509 -noout -subject' '/BEGIN/{close(cmd)};{print} |
| 检查证书文件 | openssl x509 -in [filename] -text -noout |
| 验证远程站点 | openssl s_client -connect [domain]:443 |
| 更新 CA 存储库 | sudo update-ca-certificates |
原文链接:How to Check and Verify CA Certificates in Ubuntu Linux


