受益于谷歌和苹果对 HTTPS 的强制升级要求,服务已经全面升级了,安全性提高的同时也引起了新的问题。

由于 HTTPS 证书还是很贵的,所以各种测试环境上各种非法证书,通过浏览器访问的时候可以直接选择信任证书,但通过代码就不行了,会直接抛出证书不通过的异常:java.security.cert.CertificateException javax.net.ssl.SSLHandshakeException sun.security.validator.ValidatorException 。

这时候我们可以选择直接跳过验证,当然这会使 HTTPS 的安全性就失效了,所以生产环境尽量不要用。

先进行配置初始化:

private static SSLSocketFactory sslFactory;

private static HostnameVerifier nameVerifier;

static {

try {

SSLContext sslc = SSLContext.getInstance("TLS");

TrustManager[] trustManagerArray = {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 new X509Certificate[0];

}

}};

sslc.init(null, trustManagerArray, null);

sslFactory = sslc.getSocketFactory();

nameVerifier = new HostnameVerifier() {

@Override

public boolean verify(String s, SSLSession sslSession) {

return true;

}

};

} catch (Exception e) {

log.error("系统初始化失败", e);

}

}

一般正常的 url 链接代码可能是是这样的:

public static String get(String urlLocation) throws Exception {

HttpURLConnection conn = null;

InputStream is = null;

try {

URL url = new URL(urlLocation);

conn = (HttpURLConnection)url.openConnection();

conn.connect();

is = conn.getInputStream();

return IOUtils.toString(is, "UTF-8");

} finally {

IOUtils.closeQuietly(is);

if(conn != null) conn.disconnect();

}

}

只需要简单修改,在进行实际连接前进行网络协议判断然后进行设置就可以了:

conn = (HttpURLConnection)url.openConnection();

if(conn instanceof HttpsURLConnection) {

HttpsURLConnection https = (HttpsURLConnection) conn;

https.setSSLSocketFactory(sslFactory);

https.setHostnameVerifier(nameVerifier);

}

conn.connect();

到此结束,测试通过。

java证书验证失败_Java 跳过 HTTPS 请求过程中证书验证问题相关推荐

  1. python怎么爬虫https的内容_爬虫15 python 如何处理HTTPS请求访问 SSL证书验证

    1 https和SSL之间是什么关系 https和SSL之间是什么关系:https就是在http上面加了一层ssl协议,在http站点上部署SSL数字证书就变成了https. 现在随处可见 https ...

  2. Http和https请求过程

    一.HTTP请求过程 1.浏览器根据域名解析IP地址 什么是DNS? 域名系统(DNS)是因特网的电话簿.DNS将域名转换为IP地址,以便浏览器可以加载Internet资源. DNS查找: 1.首先搜 ...

  3. 请求过程中,需要证书认证,这种情况下如何处理

    某些站点请求时候,会需要证书,没有通过认证直接访问, 请求返回结果一般包含 code 443  和 cert,要如何处理 1.请求过程中,添加证书,但这种方式不那么方便或者友好,一般不这么处理 2.请 ...

  4. 在Caffe的训练过程中打印验证集的预测结果

    起因:Caffe里的GoogLeNet Inception V1只能输出对应于三个loss的accuracy,我想计算precision,recall和F1-measure.但是调用caffe的Pyt ...

  5. java登录密码验证失败_java – Spring Security:如果身份验证失败,则重定向到登录页面...

    我们有两种登录方式. >用户名和密码由请求标头中的其他应用程序发送.检查IT,如果用户名和密码正确,则进入.[为此编写自定义过滤器] >如果请求标头中不存在用户名和密码,则会显示登录屏幕. ...

  6. tomcat配置https以及http强制跳转https(如何生成证书)

    https介绍: HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版. ...

  7. java 删除文件失败_java中File的delete()方法删除文件失败的原因

    一般来说 java file.delete失败 有以下几个原因 1.看看是否被别的进程引用,手工删除试试(删除不了就是被别的进程占用) 2.file是文件夹 并且不为空,有别的文件夹或文件, 3.极有 ...

  8. android https请求证书过滤白名单,Android处理https请求的证书问题

    android中对部分站点发送https请求会报错,原因是该站点的证书时自定义的,而非官方的,android手机不信任其证书,为了解决这个问题,一般有两种解决方案 忽略证书验证 下载证书到本地,添加到 ...

  9. springboot 使用restTemplate 发送https请求 忽略ssl证书

    最近在写接口的时候给对方回推数据,发送https请求的时候遇到这么个报错:javax.net.ssl.SSLHandshakeException: sun.security.validator.Val ...

最新文章

  1. 日本3D打印最贵牛肉!人工组装肌肉脂肪和血管,两天即完成,网友:赛博朋克的仿制肉...
  2. ninject 的 实现 的 理解
  3. 【数学】数列(jzoj 2752)
  4. Socket编程小结
  5. MySQL免安装版安装
  6. JDK 1.6环境变量的设置
  7. Lightroom Classic 教程,如何在 Lightroom 中使用边界变形保留完整视图?
  8. UVA - 10129 Play on Words(欧拉回路)
  9. 卷积神经网络CNN基本原理和相关基本概念
  10. 计算机是uefi启动 不能装win7,UEFI模式安装Win7系统方法_Win7 Uefi下安装详细教程
  11. 2010年国家公务员考试行测真题WORD完整版
  12. vue3 web项目引入高拍仪
  13. keras.models导入Sequential错误
  14. ApplicatioinRunner vs CommandLineRunner
  15. C语言手写爱心-还原最新热剧撩妹代码
  16. Win10照片应用的小bug——自动模糊图片(有过渡色)
  17. 利用AI+大数据的方式分析恶意样本(十三)
  18. java配置ehcache_配置和使用Ehcache
  19. php如何继续提升技术?一个php技术栈后端猿的知识储备仓库
  20. Java时间格式化工具类大全_二

热门文章

  1. HDU1880 魔咒词典【文本处理】
  2. HDU4510 小Q系列故事——为什么时光不能倒流【时间计算】
  3. HDU2206 IP的计算【文本处理】
  4. 《程序设计技术》第九章例程
  5. JSK-23223 数字反转【进制】
  6. Maven 项目管理 —— 安装与配置
  7. Head First 设计模式 —— 工厂模式与工厂方法
  8. 居之不易 —— 白居易
  9. 绘图神器 —— Graphviz 绘制数据结构相关图形
  10. 机器学习基础(三十二) —— 使用 Apriori 算法进行关联分析