Java如何跳过https的ssl证书验证详解

 更新时间:2019年06月10日 14:53:49   作者:莫问以  
这篇文章主要介绍了Java跳过https的ssl证书验证的解决思路,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,下面我们来深入学习下吧

打开脚本之家首页,明显看到链接是https打头,https和http的通信协议差别,在于https安全性更高:

http和https的差别

很明显,二者最大的区别在于https多了一个ssl证书验证,可以说https是身披SSL外壳的http。因为http存在如下缺陷:

1)通信使用明文,内容可能被窃听(重要密码泄露)

2)不验证通信方身份,有可能遭遇伪装(跨站点请求伪造)

3)无法证明报文的完整性,有可能已遭篡改(运营商劫持)

而https是利用SSL/TLS建立全信道,加密数据包。HTTPS使用的主要目的是提供对网站服务器的身份认证,同时保护交换数据的隐私与完整性。

https握手过程(单向认证)

补充:"SSL"证书和CA证书究竟有什么区别?

CA是数字证书管理机构,而SSL证书只是数字证书的一种,CA机构签发SSL证书,所以说,SSL是CA颁发的证书中的一种。
所以,从理论上来说,如果服务端采用https协议,而自己没有ssl证书(服务端不提供ssl证书),那么通信是不可能成功的。所以,这里有两个解决思路:

1、确认是单向认证还是双向认证,Server端是否校验Client端(存在这种情况,服务端虽采用https协议,但并不校验CA证书,如果需要校验,那服务端至少得提供秘钥)
2、可以忽略服务器证书校验(将hostname校验和CA证书校验同时关闭)

网上最常用的,就是利用jdk生成keyStore文件,该方法忽略服务器证书校验的方法,网上有很多示例,但是暂未找到可用的,先写到这里吧。。。。。

在针对http进行升级时,在HTTPS的证书未经权威机构认证的情况下,访问HTTPS站点的两种方法,一种方法是把该证书导入到Java的TrustStore文件中,另一种是自己实现并覆盖JSSE缺省的证书信任管理器类。两种方法各有优缺点,第一种方法不会影响JSSE的安全性,但需要手工导入证书;第二种方法虽然不用手工导入证书,但需要小心使用,否则会带来一些安全隐患。

**Java获取url相关参数的几个常用方法:**

1、request.getRequestURL()返回的是完整的url,包括Http协议,端口号,servlet名字和映射路径,但它不包含请求参数。

2、request.getRequestURI()得到的是request URL的部分值,并且web容器没有decode过的

3、request.getContextPath() 返回the context of the request.

4、request.getServletPath()返回调用servlet的部分url.

5、request.getQueryString()返回url路径后面的查询字符串

示例:

当前url:http://localhost:8080/CarsiLogCenter_new/idpstat.jsp?action=idp.sptopn

request.getRequestURL() --http://localhost:8080/CarsiLogCenter_new/idpstat.jsp
request.getRequestURI() -- /CarsiLogCenter_new/idpstat.jsp
request.getContextPath() --/CarsiLogCenter_new
request.getServletPath() -- /idpstat.jsp
request.getQueryString() --action=idp.sptopn

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Java 8中Stream API的这些奇技淫巧!你Get了吗?

    Java 8中Stream API的这些奇技淫巧!你Get了吗?

    这篇文章主要介绍了Java 8中Stream API的这些奇技淫巧!你Get了吗?文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • Spring data jpa的使用与详解(复杂动态查询及分页,排序)

    Spring data jpa的使用与详解(复杂动态查询及分页,排序)

    这篇文章主要介绍了Spring data jpa的使用与详解(复杂动态查询及分页,排序),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • spring boot 打包jar jar没有主目录清单问题的完美解决方法

    spring boot 打包jar jar没有主目录清单问题的完美解决方法

    这篇文章主要介绍了spring boot 打包jar jar没有主目录清单问题的解决方法,本文是小编第一次写,希望对大家有所帮助
    2018-07-07
  • log4j详细的常用配置说明介绍

    log4j详细的常用配置说明介绍

    下面看我怎么一步步配置到控制台的,log4j的输出级别和输出模式相信都知道的
    2012-11-11
  • IDEA生成patch和使用patch的方法实现

    IDEA生成patch和使用patch的方法实现

    比如你本地修复的 bug,需要把增量文件发给客户,很多场景下大家都需要手工整理修改的文件,并整理好目录,这个很麻烦,那有没有简单的技巧呢?本文主要介绍了IDEA生成patch和使用patch的方法实现,感兴趣的可以了解一下
    2023-08-08
  • SpringBoot使用邮箱发送验证码实现注册功能

    SpringBoot使用邮箱发送验证码实现注册功能

    这篇文章主要为大家详细介绍了SpringBoot使用邮箱发送验证码实现注册功能实例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02
  • 启动Solr提示Java版本低问题解决方案

    启动Solr提示Java版本低问题解决方案

    这篇文章主要介绍了启动Solr提示Java版本低问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • Java的字符串常量池StringTable详解

    Java的字符串常量池StringTable详解

    这篇文章主要介绍了Java的字符串常量池StringTable详解,JVM为了提高性能和减少内存开销,在实例化字符串常量的时候进行了一些优化,为 了减少在JVM中创建的字符串的数量,字符串类维护了一个字符串池,需要的朋友可以参考下
    2023-11-11
  • java中treemap和treeset实现红黑树

    java中treemap和treeset实现红黑树

    这篇文章主要为大家详细介绍了java中treemap和treeset实现红黑树,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • java反射使用示例分享

    java反射使用示例分享

    这篇文章主要介绍了java反射使用示例,代码很简单,需要的朋友可以参考下
    2014-02-02

最新评论