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

错误信息

verify error:num=79:invalid CA certificate

也可能输出为

  • error 79 at 1 depth lookup: invalid CA certificate

OpenSSL 3.0.13 和 3.5.7 都把这种情况报告为错误 79(较早的资料把“invalid CA certificate”列为错误 24,这个错误码仍然存在,用于其他 CA 检查)。对于同一张证书,s_client 还会输出错误 26“unsuitable certificate purpose”,而它的汇总行显示的是最后这个代码。

OpenSSL 3.x CLI (openssl s_client / openssl verify) — X509_V_ERR_INVALID_CA

含义

OpenSSL 错误 79(X509_V_ERR_INVALID_CA):证书链中处于颁发者位置的某张证书不是有效的 CA 证书——它的 basicConstraints 为 CA:FALSE 或缺失,或者它的 keyUsage 不允许对证书签名。openssl verify 消息中的深度指向出问题的那张证书(1 是第一张中间证书)。

原因

修复方法

  1. 1.

    查看所报告深度处的证书

    basicConstraints 必须为 CA:TRUE(并标记为关键扩展),并且 keyUsage 必须包含 keyCertSign。

    bash
    # The certificate at the depth named in the error must be a CA
    openssl x509 -in int.pem -noout -subject -ext basicConstraints,keyUsage
  2. 2.

    将中间证书重新签发为 CA 证书

    带上 CA 扩展重新签名;只要密钥和主体不变,它已签发的证书仍然有效。

    bash
    printf 'basicConstraints=critical,CA:TRUE,pathlen:0\nkeyUsage=critical,keyCertSign,cRLSign\n' > ca.ext
    openssl x509 -req -in int.csr -CA root.pem -CAkey root.key -days 1825 -extfile ca.ext -out int.pem

相关错误

浏览完整的签名错误库