OpenSSL中ERRNO 19和20之间的区别

我在服务器上安装了一个有效的证书,并且在OpenSSL中使用-CApath选项时,证书链是有效的。 但是,如果我不提供-CApath选项,我收到此:

19:self signed certificate in certificate chain 

当我尝试不使用-CApath的Google HTTPS端口时,OpenSSL返回:

 20:unable to get local issuer certificate 

两者有什么区别?

他们是非常类似的错误。 他们都表示,信任链没有结束在一个可信的证书。 不同之处在于,当链在中间证书上结束时发生以前的错误,而当链在根证书上结束时发生后者。

如果根证书是未知的,20是预期的错误。 信任链以中间证书结束,您无法获得发行人的证书。

如果服务器由于某种原因在链中发送了自签名的根证书,将会发生19。 客户不会使用根证书,除非他们信任它,如果他们信任它,他们已经拥有它 – 所以没有必要发送它。 但是也没有害处。 它只是改变错误信息。

所以我会得出结论,在您的服务器上,您将根证书configuration为链式证书。 所以你的服务器正在向客户端提供这个根证书。 这是不必要的,但据我所知,无害。