java - 通过 SSLSocketFactory 连接时接受使用 Java 的自签名证书
问题描述
这里有一些关于如何使用 Java 接受自签名 SSL 连接的答案。但是当通过 SSLSocketFactory 连接到服务器时,这些都不起作用。谁能给我示例代码?
解决方案
像下面这样创建一个类。此 Java 代码将使您能够接受所有证书
public static class NukeSSLCerts {
protected static final String TAG = "NukeSSLCerts";
public static void nuke() {
try {
TrustManager[] trustAllCerts = new TrustManager[] {
new X509TrustManager() {
public X509Certificate[] getAcceptedIssuers() {
X509Certificate[] myTrustedAnchors = new X509Certificate[0];
return myTrustedAnchors;
}
@Override
public void checkClientTrusted(X509Certificate[] certs, String authType) {}
@Override
public void checkServerTrusted(X509Certificate[] certs, String authType) {}
}
};
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, new SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
@Override
public boolean verify(String arg0, SSLSession arg1) {
return true;
}
});
} catch (Exception e) {
}
}
}
并像这样执行
new NukeSSLCerts().nuke();
推荐阅读
- reactjs - 无法对未安装的组件执行 React 状态更新
- javascript - 没有对象解决方案的动态键 - MongoDB findOneAndUpdate 调用
- java - JLaTeXMath 和 FXGraphics2D 无法正确显示积分符号
- c# - 在 Entity Framework Core 中替换实体集合会导致 DbContext 在未保存到 db 时获取新值。如何重新加载收藏?
- java - 在Java中的方法内部调用另一个方法
- python - 使用 openpyxl 时无法将 [1, 2, 3, 4, 5] 转换为 Excel
- javascript - 将 UTC 字符串日期转换为 UTC 日期
- powershell - 在 PowerShell 中对 TCP 或 UDP 协议进行分组并按字符编号对其进行排序
- reactjs - 从 react-native-svg 中的形状创建文本剪切效果
- c++ - 检测循环并在无向图中获取循环的成员