gpt4 book ai didi

java - 发现需要灵感时出错 : certificate_unknown and SSLHandshakeException on Payara

转载 作者:太空宇宙 更新时间:2023-11-03 13:33:24 27 4
gpt4 key购买 nike

我正在努力寻找错误所在,所以我需要一些错误跟踪灵感。

我尝试从在我的 dockerized Payara 4.1 上运行的 Java 网络应用程序调用远程服务器上的网络服务。 Docker 镜像使用带有 Java 8 的 Alpine Linux。

当我尝试调用该服务时,我得到一个

Certificate_unknown 由 SSLHandshakeException 抛出

我知道这意味着信任链不完整并且缺少证书(根/中介)。

当我通过 openssl 检查 ssl 连接时

openssl s_client -connect server:port -CAfile certificate_exported_from_remote_server.per

它工作正常(“验证返回码:0(确定)”。

openssl s_client -connect server:port -CAfile path_to_payara/config/cacerts.jks

不起作用(验证返回码:20(无法获取本地颁发者证书)),但我还没有发现是否可以将 openssl 与 keystore 一起使用。

无论如何,我已经导入了所有证书(根/中介),我可以从远程 web 服务的服务器下载并通过 keytool 安装它们

keytool -import -v -trustcacerts -alias cert -file downloadedcertificate.cer -keystore payara_path/config/cacerts.jks --storepass pwd -noprompt

当我使用 keytool -list -keystore 列出时,它显示证书已导入。

domain.xml 中,jvm-option -Djavax.ssl.trustStore 指向 cacerts.jks。

我认为这是正确的方法,但我仍然遇到这个错误,而且我太盲目了,看不出我做错了什么。

因此,我请求一些灵感来发现错误。

最佳答案

如果需要使用本地生成的证书,需要将其导入到远程服务器。您所做的是将远程证书导入本地信任库,如果 OpenSSL 从信任库中选择了那个确切的证书,这可能会起作用,但我假设本地 ltrust 库中有更多证书,并且它选择了一个不在远程的证书服务器的信任库。

规则很简单:客户端使用的证书必须存在于远程服务器的信任库中

关于java - 发现需要灵感时出错 : certificate_unknown and SSLHandshakeException on Payara,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47663500/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com