主要作用
将 Windows 系统导出的 PKCS#7 格式证书链文件(.p7b)转换为 Linux 系统可用的 PEM 格式证书文件(.crt)
bash
openssl pkcs7 -inform DER -print_certs -in certnew.p7b -out Linuxcert.crt
命令结构分解:
openssl pkcs7 # 使用 OpenSSL 的 PKCS#7 工具
-inform DER # 指定输入文件格式为 DER(二进制格式)
-print_certs # 打印/提取证书内容
-in certnew.p7b # 输入文件名
-out Linuxcert.crt # 输出文件名
常见相关操作:
1. 查看证书内容
bash
# 查看提取的证书
openssl x509 -in Linuxcert.crt -text -noout
# 查看第一个证书
openssl x509 -in Linuxcert.crt -text -noout
2. 分离证书链中的各个证书
bash
# 将证书链拆分为单独的文件
csplit -z Linuxcert.crt '/-----BEGIN CERTIFICATE-----/' '{*}'
# 会生成多个文件:xx00, xx01, xx02 等
3. 验证证书链
bash
# 验证证书链的完整性
openssl verify -CAfile ca-bundle.crt Linuxcert.crt
格式对比:
| 格式 | 编码 | 可读性 | 文件开头 | 常见扩展名 |
|---|---|---|---|---|
| DER | 二进制 | 不可读 | 二进制数据 | .der, .cer, .p7b |
| PEM | Base64 | 可读 | -----BEGIN... |
.pem, .crt, .cer |
诊断命令:
bash
# 检查文件类型
file certnew.p7b
# 如果是 DER 格式,应该显示:data
# 如果是 PEM 格式,应该显示:ASCII text
# 查看文件前几行
head -n 3 certnew.p7b
# 如果是 PEM 格式,会看到:-----BEGIN PKCS7-----
# 如果是 DER 格式,会看到乱码