在 Java 应用程序中出现 javax.net.ssl.SSLProtocolException: Received close_notify during handshake 错误通常是因为协议版本不匹配、证书过期或者服务器协商失败导致的。为了解决该问题,可以尝试以下步骤:
System.out.println(Arrays.toString(SSLContext.getDefault().getSupportedSSLParameters().getProtocols()));
SSLSocketFactory sslSocketFactory = HttpsURLConnection.getDefaultSSLSocketFactory();
SSLSocket sslSocket = (SSLSocket) sslSocketFactory.createSocket();
SSLParameters parameters = sslSocket.getSSLParameters();
Certificate[] certificates = sslSocket.getSession().getPeerCertificates();
for (Certificate certificate : certificates) {
System.out.println(certificate.toString());
}
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, null, null);
HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());
HttpsURLConnection.setDefaultHostnameVerifier((h, s) -> true);
HttpsURLConnection urlConn = (HttpsURLConnection) new URL("https://example.com").openConnection();
urlConn.setRequestMethod("GET");
urlConn.connect();
try (BufferedReader br = new BufferedReader(new InputStreamReader(urlConn.getInputStream()))) {
String line = null;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
}
上一篇:Berylliumcrate无法与项目连接,与cc的连接失败。
下一篇:Beryx运行时插件在JavaFX项目的“jre”任务中失败:尽管在“javafx”块中声明了模块,但未找到模块“javafx.base”。