SSLException异常解读与解决
来源:互联网 发布:对外贸易数据网 编辑:程序博客网 时间:2024/05/17 23:17
在读取一个比较有影响力的网站的API的时候,由于对方采用的是HTTPS的链接,而不是HTTP的链接,所以导致了如下的问题:
javax.net.ssl.SSLException: java.lang.RuntimeException: Could not generate DH keypair原本以为两者是一样的访问方式,所以出错主要还是在于自己,当然在没找到原因之前并没有向这个方面去想,这也是后来才意识到的。
概念与理解
HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司(Netscape)进行,并内置于其浏览器Netscape Navigator中,提供了身份验证与加密通讯方法。现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。--百度百科
个人的理解是:这个HTTPS本质上还是基于TCP/IP协议的,但是又加入了一个为了安全起见的SSL,这个SSL主要的作用在于安全,对传输过程中的数据进行加密。提供一个身份验证和密码通讯的方法。
HTTPS和HTTP的区别主要为以下四点:
一、https协议需要到ca申请证书,一般免费证书很少,需要交费。
二、http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。
三、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
四、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
转载请注明出处:SSLException异常解读与解决解决方案
HttpUtils中:
public static String getData(String url) {CloseableHttpClient client = SSLUtils.createSSLClientDefault();HttpGet getMethod = new HttpGet();try {getMethod.setURI(new URI(url));HttpResponse response = client.execute(getMethod);HttpEntity entity = response.getEntity();String data = EntityUtils.toString(entity);return data;} catch (Exception e) {log.error("HttpUtilsError");} return "";}
SSLUtils类
public static CloseableHttpClient createSSLClientDefault() {try {SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() {// 信任所有@Overridepublic boolean isTrusted(X509Certificate[] chain, String authType) {return true;}}).build();SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext);return HttpClients.custom().setSSLSocketFactory(sslsf).build();} catch (KeyManagementException e) {log.error("SSLUtilsErrorKetManage");} catch (NoSuchAlgorithmException e) {log.error("SSLUtilsErrorNOAlgorithm");} catch (KeyStoreException e) {log.error("SSLUtilsErrorKeyStore");}return HttpClients.createDefault();}
0 0
- SSLException异常解读与解决
- Studio中SSLException异常
- SSLException
- Java异常解读以及通过业务逻辑解决异常的方式
- Android 异常:javax.net.ssl.SSLException: hostname in certificate didn't match
- https请求报错解决:javax.net.ssl.SSLException: Not trusted ...
- 解决 javax.net.ssl.SSLException: java.lang.RuntimeException: Could not generate DH keypair
- JAVA异常解读
- 解读Rails - 处理异常
- Java异常解读
- struts异常信息解读
- Java 自定义异常解读
- CheckMultipleBlocks函数引发的异常与解决
- Android 异常报错与解决
- getHibernateTemplate().update()异常分析与解决(NonUniqueObjectException 异常)
- zookeeper的安装与集群与常见异常解决
- 2014年辛星Javascript解读第五节 break continue 与异常处理
- springmvc异常信息的解读
- hive函数大全
- 81. Search in Rotated Sorted Array II
- 傅里叶分析之从入门到放弃
- 虚幻4渲染系统结构解析
- CRF学习日记-1
- SSLException异常解读与解决
- LINUX 可变参数的使用
- Leetcode 125 Valid Palindrome
- git 远程版本库,github提供服务原理,git自动更新发送邮件
- Spring 简单的配置
- Error installing pods:activesupport requires Ruby version >=2.2.2
- 十大面试问题解惑,秒杀一切HR、技术面试。程序员必读! 最能体现求职者能力的就是面试,能不能拿到Offer,取决于你面试时的表现,只有有准备才能在面试过程中游刃有余。小编收集了10个面试官最爱提的问题
- Java学习记录(5)——深入数组
- 读取数字的循环,用cin表达式的值判断错误输入并清除cin流接受新的输入