java密钥库无法验证URL

ben*_*n w 3 ubuntu ssl java certificate-authority keystore

使用相同的 url,这最终会给出一个验证返回码 20(无法获得本地证书颁发者):

openssl s_client -connect $URL:443 -showcerts -CAfile /etc/ssl/certs/java/cacerts
Run Code Online (Sandbox Code Playgroud)

这给出了一个验证返回码 0:

openssl s_client -connect $URL:443 -showcerts -CApath /etc/ssl/certs
Run Code Online (Sandbox Code Playgroud)

也一样... -CAfile /etc/ssl/certs/Thawte_Premium_Server_CA.pem

但是该证书已经在java 密钥库中。我需要能够从 Java-land 访问 url,但我无法弄清楚发生了什么。我在这里是一个总n00b,所以任何帮助将不胜感激。

小智 5

cacerts 文件是 JKS 格式的密钥库,OpenSSL 不支持它(它是 Java 的标准密钥库格式,但非 Java 实用程序通常不支持)

如果要使用openssl s_client该密钥库中的证书,可以将它们提取为可用的形式

keytool -list -rfc -keystore /etc/ssl/certs/java/cacerts > cacerts.pem
Run Code Online (Sandbox Code Playgroud)

(cacerts 文件的默认密码是“changeit”,但如果您只想查看公共证书,您只需输入一个空白密码就可以了)