gpt4 book ai didi

java - 在 java 中打开自签名 HTTPS SSL URL 的直接方法?

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

我正在构建一个需要在 java 中打开自签名 HTTPS SSL URL 的应用程序。我了解到您可以通过添加对 HttpsURLConnection.setDefaultHostnameVerifier() 的调用来绕过 SSL 问题,您可以在其中说明允许使用哪些主机名。

但是,我有第二个问题,我的服务器正在运行自签名证书。因此,即使绕过主机名,我也会遇到如下异常:

javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX 路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效证书路径

我环顾四周,发现的唯一解决方案是将证书添加到 java keystore ,但这对我来说是个问题,因为我无法控制它们何时或如何更新 java,而且我'我读到 keystore 不会在更新之间保留,而且我无法访问 JVM 之外的系统。

我的应用程序只会调用单个服务器,所以如果有办法绕过自签名限制,并且从不查询 keystore ,那不会是安全问题,但有没有办法做到这一点?

最佳答案

I'm building an application that needs to open self-signed HTTPS SSL URLs in java. I've learned that you can bypass the SSL problems by adding a call to HttpsURLConnection.setDefaultHostnameVerifier() where you say what hostnames are allowed.

你的问题有一些误解:
主机名验证与证书是否自签名无关。
这是一种将您尝试访问的域与证书信息(CN 或主题替代名称)相匹配的验证。

如果需要接受与url不匹配的证书,则需要配置 validator (完全不推荐!!!)

关于自签名。
这无关紧要。
您可以配置您的应用程序以加载您的自定义信任库,其中将包含您的应用程序将信任的证书。事实上,这是最好的方法(比使用 Java 的 cacerts)。
您所要做的就是将证书导入 keystore (JKS 或 PKCS12)并将其加载到您的自定义中 TrustManagers在你的应用程序中。
只是谷歌周围,很多例子self-signed-ssl

关于java - 在 java 中打开自签名 HTTPS SSL URL 的直接方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9048453/

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