java提取服务器证书
我需要帮助获取apt代码片段以获取服务器证书-有效和无效、由CA签名和自签名。任何链接和参考将高度赞赏
我有一个UNIX命令,它提供了我想要的东西,但我希望使用Java获得相同的输出。UNIX中的命令如下所示-
echo -n | openssl s_client -connect www.gmail.com:443 -showcerts | \
sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /tmp/$SERVERNAME.cert
这将返回gmail上的(不知道加密)证书链。我希望我的程序提供完全相同的信息。打印整个证书链
# 1 楼答案
我过去也遇到过同样的挑战,并在我的库中提供了这个选项,您可以在这里看到:GitHub - SSLKickstart - Kickstart我认为其他开发人员在这里共享它可能会有所帮助
用法
使用maven安装库
# 2 楼答案
这可以通过以下步骤完成:
TrustManager
初始化一个SSLContext
(这个用例是使用这种信任管理器的极少数原因之一)。只有当您怀疑远程证书不可信时,才可以这样做李>SSLSocketFactory
李>SSLSocket
。如果使用主机名(而不是InetAddress
),这将在Java 7上启用SNI,因此这相当于使用-servername
作为openssl
命令的附加选项李>startHandhsake()
)SSLSocket
中获取SSLSession
李>getPeerCertificates()
中的每个Certificate
:getEncoded()
获取其编码值(如byte[]
)PEMWriter
李>