如你正确指出的,有两个问题:(a) 证书是值得信赖的,(b) 证书上的名字与东道国名不符。
<WARNING: for any others achieving this questionnaire, this is a dirty, horrible hack and You must not 它用于任何事项。 没有任何认证的SSL/TLS比完全没有加密更糟——阅读和修改你的“加密”数据是攻击者的trivial和你 哪怕是知道。
还是与我在一起? 我担心......
a) 通过创建“SSLContext”习俗来解决,其信托经理接受以下任何内容:
SSLContext ctx = SSLContext.getInstance("TLS");
ctx.init(null, new TrustManager[] {
new X509TrustManager() {
public void checkClientTrusted(X509Certificate[] chain, String authType) {}
public void checkServerTrusted(X509Certificate[] chain, String authType) {}
public X509Certificate[] getAcceptedIssuers() { return new X509Certificate[]{}; }
}
}, null);
HttpsURLConnection.setDefaultSSLSocketFactory(ctx.getSocketFactory());
(b) 设置一个东道方,使联系得以进行,即使该名牌照与东道方名称相符:
HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
public boolean verify(String hostname, SSLSession session) {
return true;
}
});
两者都必须在你们的法典一开始,在你们开始与HttpsURLConnections相接之前发生。 这既在安乐施会,又在普通的JRE工作。 欢乐。