openssl 无效的 CA 证书

openssl 无效的 CA 证书

我正在使用 PKI 基础架构设置服务器到服务器的 OpenVPN,但无法使其工作。我怀疑是证书链中存在问题,但我不知道该如何解释。我有一个离线根 CA 和一个证书层次结构。CA 由名为 EJBCA 的产品进行外部管理。从图中可以看出,该链如下所示(名称已更改):

RootCA -> OnlineSubCA -> SubCA1 -> VPNCA

我使用 CA VPNCA 签署了服务器和客户端证书,并在这些系统上拥有证书链。在调试 OpenVPN 时,我尝试使用“openssl s_server”和 s_client”,这让我相信这是 CA 链。具体来说,在服务器上:

openssl s_server -cert server.cert -key server.key -CAfile chained.pem -verify 5

在客户端上

openssl s_client -cert client.cert -key client.key -CAfile chained.pem -verify 5

服务器会返回以下内容:

depth=3 C = CA, O = My Company, CN = OnlineSubCA
verify error:num=24:invalid CA certificate
verify return:1
depth=3 C = CA, O = My Company, CN = OnlineSubCA
verify error:num=26:unsupported certificate purpose
verify return:1
depth=4 C = CA, O = My Company, CN = RootCA, emailAddress = [email protected]
verify return:1
depth=3 C = CA, O = My Company, CN = OnlineSubCA
verify return:1
depth=2 CN = SubCA1, O = My Company, C = CA
verify return:1
depth=1 CN = VPNCA
verify return:1
depth=0 C = CA, ST = , L = , O = My Company, OU = , CN = client1.mycompany.com, emailAddress = [email protected]
verify return:1

我完全无法解释为什么会出现这种情况。OpenVPN 也因类似的错误而失败,来自客户端:

VERIFY ERROR: depth=3, error=invalid CA certificate: /C=CA/O=My_Company/CN=OnlineSubCA

我在 Ubuntu 12.04 上运行 OpenVPN 2.2.1 和 OpenSSL 1.0.1。两者的时间同步。

我不知道该如何继续。任何想法/建议都将不胜感激。

答案1

这是 X509v3 扩展的一个问题。现代证书的签名方式表明了该类型证书的批准用途。可以通过将证书导入openssl x509 -text或使用 指定文件路径来显示这些内容-in

就您而言,这些错误消息表明您指定的证书不是 CA 证书。(最大的提示是“不支持的证书用途”)使用上述命令,显示证书的文本信息。有效的 CA 证书将如下所示:

        X509v3 Basic Constraints:
            CA:TRUE

非 CA 证书将显示以下内容:

        X509v3 Basic Constraints:
            CA:FALSE

您的文件可能已经混乱了,在移动文件时很容易发生这种情况。openssl x509将用放大镜观察实际证书的内容。

相关内容