SSL证书知识汇总

2025-06-11 19:36:00
丁国栋
原创 9

Ubuntu Linux如何导入 .p7b 证书?

在 Ubuntu Linux 上导入 .p7b(PKCS#7)格式的证书文件,通常需要将其转换为 PEM 或 CRT 格式,然后将其导入系统信任存储或用于特定服务(如 Apache、Nginx、Java 应用等)。下面是详细步骤:


🔧 步骤一:转换 .p7b.pem.crt

.p7b 文件通常包含证书链(证书 + 中间证书),但不包含私钥。你可以使用 OpenSSL 工具进行转换。

openssl pkcs7 -print_certs -in your_cert.p7b -out your_cert.pem

这会将 .p7b 文件转换为 .pem 格式,包含一组 -----BEGIN CERTIFICATE----- 段。

你也可以将 .pem 重命名为 .crt,以便系统识别:

注意:update-ca-certificates 指令需要使用 .crt 格式的证书,如果是 .pem 格式则不行。

mv your_cert.pem your_cert.crt

📁 步骤二:将证书导入系统信任存储

对于系统全局信任(适用于 curl、wget 等):

  1. .crt 文件复制到系统的证书目录:
sudo cp your_cert.crt /usr/local/share/ca-certificates/
  1. 更新系统证书存储:
sudo update-ca-certificates

成功后你会看到:

1 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...

系统现在会信任这个证书。


✅ 检查证书是否已生效

你可以检查是否成功导入证书,例如:

curl https://your-secure-site.com

如果不再报证书错误,说明已经导入成功。


DER Encoded PKCS#7 Signed Data 类型的证书如何转换为pem?

要将 DER 编码的 PKCS#7 Signed Data 类型的证书(通常扩展名为 .p7b, .p7c,有时是 .der)转换为 PEM 格式,可以使用 openssl 工具。以下是详细步骤:


🧾 文件类型说明

  • PKCS#7 格式可以是:
    • DER 编码(二进制)格式 ✅(你遇到的类型)
    • PEM 编码(Base64)格式
  • OpenSSL 支持将 DER 格式的 PKCS#7 转换为 PEM。

🔧 转换命令

假设你的证书文件名为 cert.p7b(DER 编码的 PKCS#7 文件):

openssl pkcs7 -inform DER -in cert.p7b -print_certs -out cert.pem

参数说明:

  • -inform DER:指定输入格式是 DER(二进制编码)
  • -in cert.p7b:输入文件
  • -print_certs:提取证书部分(从 PKCS#7 中提取所有证书)
  • -out cert.pem:输出为 PEM 格式

✅ 输出结果

输出文件 cert.pem 可能包含多个证书段,例如:

-----BEGIN CERTIFICATE-----
MIID...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIC...
-----END CERTIFICATE-----

这通常包括:

  • 服务器证书
  • 中间证书(CA 证书链)

💡 可选操作

如果你只需要第一个证书(通常是服务器证书):

可以手动编辑 cert.pem,保留第一个 -----BEGIN CERTIFICATE----------END CERTIFICATE----- 的块。

如果你要转换为 .crt

PEM 和 CRT 在本质上是相同格式(Base64 编码),只需重命名即可:

mv cert.pem cert.crt

🧪 验证 PEM 格式是否正确

openssl x509 -in cert.pem -noout -text

如果文件是有效的 PEM 格式证书,会输出证书内容。

验证 CA 证书 和 CA签发的证书是否匹配

以这个 https://inv-veri.chinatax.gov.cn/zdaz.html 为例:它是国家税务总局全国增值税发票查验平台。支持增值税专用发票、增值税电子专用发票、电子发票(增值税专用发票)、电子发票(普通发票)、增值税普通发票(折叠票)、增值税普通发票(卷票)、增值税电子普通发票(含收费公路通行费增值税电子普通发票)、机动车销售统一发票、二手车销售统一发票在线查验。这个网站为了保证纳税人的发票信息安全,在使用该服务之前需要安装他们自签发的CA证书。

证书下载地址1:https://inv-veri.chinatax.gov.cn/ca/taxca.p7b 证书下载地址2:https://inv-veri.chinatax.gov.cn/download/zhfwpt/taxca.p7b

openssl verify -CAfile /usr/local/share/ca-certificates/taxca.crt inv-veri.chinatax.gov.cn.crt

重启 Chrome 浏览器

在 Chrome 浏览器内输入以下文本回车即可。

chrome://restart

在 Linux 命令内验证

echo | openssl s_client -servername inv-veri.chinatax.gov.cn -connect inv-veri.chinatax.gov.cn:443 2>/dev/null | openssl x509 -noout -issuer -subject -dates

提示:网站之所以要求安装CA证书(root CA),一般是因为这个网站下有较多的子网站需要验证证书(这些子网站的证书是由CA网站签发的)。所以与的组织为了简便,就要求用户自己下载并安装CA证书。而CA证书有时在某些电脑是比较难以安装的,即使安装了浏览器(Chrome、Firefox等)也不信任。为了灵活的解决这个问题,只有去将这些网站以及网站用到其他相同二级域名的证书都添加到信任中。以“国家税务总局全国增值税发票查验平台”为例,这个网站的证书是由国家税务总局税务电子证书管理中心签发的,而它还依赖这个发票查验验证码功能的网站,那么添加例外时这两个网站都要添加例外。重点就在于观察浏览器控制台和网络请求中那些失败了的请求,例如 ERR_CERT_AUTHORITY_INVALID等。

发表评论
博客分类