当前位置: 首页 > 知识库问答 >
问题:

如何仅为单个HTTPURLConnection将“jsse.enableSNIExtension”设置为false?

郗唯
2023-03-14

我目前有一个应用程序,将使HTTP发布请求到很多URL。一些连接失败,出现以下异常。

线程“main”javax.net.ssl.SSLProtocolException中的异常:握手警报:sun.security.ssl.ClientHandshaker.handshakeAlert(ClientHandshaker.java:1410)位于sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:2004)位于sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1113)在sun.security.ssl.SSLSocketImpl.performinialhandshake(SSLSocketImpl.java:1363)在sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1391)上

. . .

因此,我只想为引发上述异常的特定连接将“jsse.enableSNIExtension”设置为false。

如何在HTTPsURLConnection/SSLSocket级别上执行?

代码

URL url = new URL("https://artofskinmd.localgiftcards.com/");
HttpURLConnection httpConnection = (HttpURLConnection) url.openConnection();

httpConnection.connect();

我试图找到一种方法来更改HttpsURLConnection对象的SSLParameters。但是我找不到任何setSSLParameters()方法来设置空服务器名称列表。我不能找到任何在线设置SSLParameters为HttpURLConnection,SSLContext等

共有2个答案

王岳
2023-03-14

请参见Javajar-没有主清单属性

还有这个promise

https://github.com/Lekensteyn/OWASP-WebScarab/commit/8f2362eb021924cece9fb544f04bde5da7bfed4a

越学博
2023-03-14

显然,站点依赖于SNI,否则它将不关心客户机在SNI扩展中发送的名称。这意味着禁用扩展可能不会有帮助,但相反,您可能会遇到一些握手失败或一些默认站点(和证书),而可能不是您想要的站点。要解决此问题,您不应禁用SNI,而应使用正确的名称,即站点期望的名称。

编辑:这看起来像是一个糟糕的服务器配置以及Java7和Java8中的错误。访问URLhttps://artofskinmd.localgiftcards.com/会导致一个未知的TLS警报警告,Java7和Java8错误地认为是致命的(与旧的OpenSSL 0.9一样)。在这种情况下禁用SNI实际上会有所帮助,但似乎没有办法为单个HttpURLConnection对象禁用SNI。

 类似资料:
  • 如果客户端将JSSE.EnableSniExtension系统属性设置为false,那么它会暴露哪些安全风险? PS:我们试图通过HTTPS连接的所有URL。所以,会有证书验证。

  • 问题内容: 是否可以为JDK stdlib设置套接字级别选项(如SO_KEEPALIVE)HttpUrlConnection?我试图找出一种获取HTTP请求的方法,该方法不会成为偶尔的“挂起”连接(似乎经常由于网络数据包丢失而发生)的受害者。一个更强大的HTTP客户端。我知道有这种setReadTimeout方法,但我正在尝试寻找一些方法来使TCP流恢复正常运行,而不是像读取超时那样中止它。或者至

  • 问题内容: 我安装了miniconda3,并在其中创建了一个名为py35的虚拟环境。我有一些我只想在此环境中使用的库。因此他们在 但是,由于LD_LIBRARY_PATH不包含上述文件夹,因此无法从环境中找到它们。现在,我想将LD_LIBRARY_PATH设置为仅在虚拟环境中时才包含/ lib。 我当时正在考虑修改miniconda用来启动环境的激活脚本,但是不确定这是标准做法还是有更简单的方法来

  • 问题内容: 我尝试过这种方式,但是它没有改变吗? 问题答案: 最好使用.png文件;.ico是Windows特定的。最好不要使用文件,而是使用类资源(可以包装在应用程序的jar中)。 尽管您甚至可能考虑将setIconImages用于多种尺寸的图标。

  • 我使用的是Spring Kafka 2.2.7,我已经将配置为,并使用消费消息,一切都按预期运行。 我想添加一个来记录所有消耗的消息,但发现很难配置它。留档指出可以在容器上设置RecordInterceptor,但我不确定如何获取容器的实例。 从版本2.2.7开始,您可以向侦听器容器添加RecordInterceptor;它将在调用允许检查或修改记录的侦听器之前被调用。 我查阅了Spring文档,

  • 我将一个字符串设置为activeElement.value,一切正常。现在,我想为activeElement.value设置一个变量,我得到了以下错误代码: 线程“main”中的异常 org.openqa.selenium.WebDriver异常:未定义患者 ID 命令持续时间或超时:66 毫秒 构建信息:版本:“2.45.0”,修订版:“5017cb8”,时间:“2015-02-26 23:59