import javax.net.ssl.*;
import java.io.*;
import java.security.cert.X509Certificate;
public class JavaSSLExample {
// 忽略证书验证的 SSL 连接示例
public static void main(String[] args) {
try {
// 创建一个不验证证书链的信任管理器
TrustManager[] trustAllCerts = new TrustManager[]{
new X509TrustManager() {
public X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted(X509Certificate[] certs, String authType) {
}
public void checkServerTrusted(X509Certificate[] certs, String authType) {
}
}
};
// 安装信任所有证书的信任管理器
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
// 创建一个不验证主机名的主机名验证器
HostnameVerifier allHostsValid = (hostname, session) -> true;
// 安装主机名验证器
HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid);
// 打开 HTTPS 连接
URL url = new URL("https://example.com");
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
connection.setRequestMethod("GET");
// 获取响应代码
int responseCode = connection.getResponseCode();
System.out.println("Response Code: " + responseCode);
// 读取响应内容
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String inputLine;
StringBuilder content = new StringBuilder();
while ((inputLine = in.readLine()) != null) {
content.append(inputLine);
}
in.close();
// 输出响应内容
System.out.println("Response Content: " + content.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
}
TrustManager 和 SSLContext:
TrustManager
用于管理 SSL/TLS 握手过程中对服务器证书的验证。X509TrustManager
,它忽略了所有的证书验证(即信任所有证书)。这在开发和测试环境中有时是必要的,但在生产环境中是非常危险的做法,因为它会暴露应用程序到潜在的安全风险。HostnameVerifier:
HostnameVerifier
用于验证服务器的主机名是否匹配其证书中的主机名。true
的 HostnameVerifier
,这意味着它将接受任何主机名。同样,这在开发和测试环境中可能是有用的,但在生产环境中应避免使用。HTTPS 连接:
HttpsURLConnection
打开一个 HTTPS 连接,并发送一个 GET 请求到指定的 URL。getResponseCode()
获取 HTTP 响应码,并通过 getInputStream()
读取响应内容。安全提示:
下一篇:java list.remove
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站