我有一台服务器给我TLS问题,我想查看它提供的证书,以帮助诊断问题。通常,我会使用openssl来显示证书,如下所示:
$ openssl s_client -connect facebook.com:443
但是,我不知道CA签署了此服务器的证书。我认为这是我们的内部CA,但测试建议不然。因此,我无法使用openssl的-CAfile
或-CApath
标志来指定CA.
还有一个限制。服务器不是HTTP服务器(它是postgres),否则我只会使用curl --insecure
。
我尝试使用-verify
标记,因为根据OpenSSL's documentation:
要使用的验证深度。这指定了服务器证书链的最大长度并启用了服务器证书验证。目前,验证操作在错误之后继续,因此可以看到证书链的所有问题。作为副作用,由于服务器证书验证失败,连接永远不会失败。
它声称在所有错误之后继续,所以可以看到所有问题。但是,我得到的只是:
1737:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:s23_lib.c:188:
这是我使用或不使用-verify
时收到的错误消息。
那么如何查看服务器提供的证书?