跳到主要内容
ecdsa.com
OpenSSL CLI (openssl x509 / verify)OpenSSL CLI

错误信息

unable to load certificate

这是 OpenSSL 1.1.x 的措辞。OpenSSL 3.0 会先打印“Could not read certificate from cert.pem”,接着是首字母 U 大写的“Unable to load certificate”;OpenSSL 3.5 及更高版本打印“Could not find certificate from cert.pem”,外加一行 STORE routines 错误栈(已在 3.0.2 和 3.6.4 上复现)。措辞因版本而异,失败本身完全相同。

含义

openssl x509(或其他读取证书的命令)无法从文件中解析出证书。输入要么是另一种 PEM 对象(密钥、CSR),要么是不对的二进制编码,要么根本不是 X.509 结构的文本——命令根本没走到读取字段那一步。由于证书文件无论采用哪种编码都命名为 .crt 或 .cer,文件名在这里说明不了任何问题,只有字节内容才能说明。

原因

修复方法

  1. 1.

    先识别,再转换

    检查标签或开头的几个字节;必要时把 DER 转换为 PEM。

    bash
    head -1 cert.file          # BEGIN what?
    openssl x509 -inform der -in cert.der -out cert.pem   # DER → PEM
  2. 2.

    解包容器格式

    从 PKCS#7 和 PKCS#12 打包文件中提取证书,保存为普通 PEM。

    bash
    openssl pkcs7 -print_certs -in bundle.p7b -out certs.pem
    openssl pkcs12 -in bundle.pfx -clcerts -nokeys -out cert.pem
  3. 3.

    CSR 要用 req 命令

    如果文件是证书请求,就用 req 查看——并且记住,它还需要由 CA 签名才能成为证书。

    bash
    openssl req -in request.csr -noout -text

相关错误

浏览完整的签名错误库