openssl无效的CA证书


8

我正在使用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 = certs@mycompany.com
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 = pki@mycompany.com
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。两者的时间同步。

我对如何进行进一步操作一无所知。任何想法/建议将不胜感激。

Answers:


16

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

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

        X509v3 Basic Constraints:
            CA:TRUE

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

        X509v3 Basic Constraints:
            CA:FALSE

您可能将文件弄乱了,在移动文件时这是一件相当容易的事情。openssl x509将会用放大镜照亮实际证书的内容。


确实是问题所在,检查第二个证书是否显示“ CA:FALSE”。它似乎是在EJBCA中以这种方式设置的,这是一个错误,我可能不得不重新创建它。谢谢安德鲁!
Michael Hart 2013年

很高兴它有所帮助。:)
Andrew B

7
此外,你会得到26 / unspupported证书目的,如果你有“关键”为基本约束,但是你的证书没有签名/由合法当局的一个值得信赖的(就遇到了这个尝试使用自签名根CA)
Zerkz
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.