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

由于手机中的时间不对,导致的https网络连接失败

2018-03-12 15:17 246 查看
在维护别人的代码,发现,如果手机的时间是老的,不正确,https网络访问onFailure:javax.net.ssl.SSLHandshakeException: com.android.org.bouncycastle.jce.exception.ExtCertPathValidatorException: Could not validate certificate: current time 百度搜索到,这个异常说的是在校验证书的时候出现时间校验失败,另外看了项目,看到okhtttp3 https 访问证书没有设置,根本没有做对HTTPs 的支持操作。最后自己加了信任所有证书的操作

private static OkHttpClient.Builder setSSL(OkHttpClient.Builder builder) {
try {
// Create a trust manager that does not validate certificate chains
final TrustManager[] trustAllCerts = new TrustManager[] {
new X509TrustManager() {
@Override
public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType) {
}

@Override
public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType) {
}

@Override
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return new java.security.cert.X509Certificate[]{};
}
}
};

// Install the all-trusting trust manager
final SSLContext sslContext = SSLContext.getInstance("SSL");
sslContext.init(null, trustAllCerts, new java.security.SecureRandom());
// Create an ssl socket factory with our all-trusting manager
final javax.net.ssl.SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();

builder.sslSocketFactory(sslSocketFactory);
builder.hostnameVerifier(new HostnameVerifier() {
@Override
public boolean verify(String hostname, SSLSession session) {
return true;
}
});

return builder;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐