您的位置:首页 > 理论基础 > 计算机网络

Android okHttp:Https之SSL - Hostname was not verified

2016-07-05 00:02 549 查看

踩坑篇

项目服务端传输协议换成了https,客户端打接口一直报:
Hostname 'url' was not verified

原因:服务端https的证书没有过审

解决方案(直接上代码):

private static void allowAllSSL() {
SSLContext sc = null;
try {
sc = SSLContext.getInstance("SSL");
sc.init(null, new TrustManager[]{new X509TrustManager() {
@Override
public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {

}

@Override
public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {

}

@Override
public X509Certificate[] getAcceptedIssuers() {
return null;
}
}}, new SecureRandom());
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (KeyManagementException e) {
e.printStackTrace();
}

mOkHttpClient.setSslSocketFactory(sc.getSocketFactory());
mOkHttpClient.setHostnameVerifier(new HostnameVerifier() {
@Override
public boolean verify(String hostname, SSLSession session) {
return true;
}
});
}


主要是这里:

mOkHttpClient.setSslSocketFactory(sc.getSocketFactory());
mOkHttpClient.setHostnameVerifier(new HostnameVerifier() {
@Override
public boolean verify(String hostname, SSLSession session) {
return true;
}
});
}


具体分析可以去了解下SSL安全协议,这样写之后实际是降低了https的安全性了,不过证书不过审只能这样了。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android