- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我目前有一个应用程序可以向很多 URL 发出 HTTP post 请求。某些连接失败,出现以下异常。
Exception in thread "main" javax.net.ssl.SSLProtocolException: handshake alert: unrecognized_name at sun.security.ssl.ClientHandshaker.handshakeAlert(ClientHandshaker.java:1410) at sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:2004) at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1113) at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1363) at 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() 方法。我无法在网上找到任何有关为 HttpURLConnection、SSLContext 等设置 SSLParameters 的内容
最佳答案
很明显该站点依赖于SNI,否则它不会关心客户端在SNI扩展中发送的名称。这意味着禁用扩展可能无济于事,但您可能会遇到一些握手失败或某些默认站点(和证书),而且可能不是您想要的站点。要解决此问题,您不应禁用 SNI,而应使用正确的名称,即站点期望的名称。
编辑:这看起来既是错误的服务器配置,又是 Java7 和 Java8 中的错误。访问 URL https://artofskinmd.localgiftcards.com/
将导致 unknown_name TLS 警报 warning Java7 和 Java8 错误地认为它是致命的(与非常旧的 OpenSSL 相同0.9.8).在这种情况下禁用 SNI 实际上会有所帮助,但似乎没有办法为单个 HttpURLConnection 对象禁用 SNI。
关于java - 如何仅为单个 HTTPURLConnection 将 “jsse.enableSNIExtension” 设置为 false?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32068009/
我正在尝试将 jsse.enableSNIExtension 属性设置为 false,但每次尝试时我都会获得 java 手册。 java -Djsse.enableSNIExtension=false
我目前有一个应用程序可以向很多 URL 发出 HTTP post 请求。某些连接失败,出现以下异常。 Exception in thread "main" javax.net.ssl.SSLProto
我目前有一个应用程序可以向很多 URL 发出 HTTP post 请求。某些连接失败,出现以下异常。 Exception in thread "main" javax.net.ssl.SSLProto
我是一名优秀的程序员,十分优秀!