Java如何跳过https的ssl证书验证详解
作者:莫问以 发布时间:2023-08-24 11:34:56
打开首页,明显看到链接是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
来源:https://www.jianshu.com/p/e44f4b0c67da
猜你喜欢
- CompletableFuture 介绍CompletableFuture是1.8引入的新特性,一些比较复杂的异步计算场景,尤其是需要串联多
- 前言本文主要给大家介绍的是关于Java对xls文件进行读写操作的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍:wi
- 前言多数据源的事务处理是个老生常谈的话题,跨两个数据源的事务管理也算是分布式事务的范畴,在同一个JVM里处理多数据源的事务,比较经典的处理方
- Spring对配置类的处理主要分为2个阶段配置类解析阶段会得到一批配置类的信息,和一些需要注册的beanbean注册阶段将配置类解析阶段得到
- webp格式图片webp格式图片是google推出的,相比jpg png有着巨大的优势,同样质量的图片webp格式的图片占用空间更小,在像电
- 最近要给一个 Winform 项目添加功能,需要一个能显示进度条的弹窗,还要求能够中止任务,所以就做了一个,在此做个记录总结。虽然用的是比较
- 一. 线性表中的顺序表线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见
- package cn.response;import java.awt.Color;import java.awt.Font;import
- “Java is still not dead—and people are starting to figure that out.”本教
- 先看代码public class MaxHuiWen {public static void main(String[] args) { &
- 这几天自己研究了关于地手机上面开发安卓地图的问题,发现百度官方示例demo讲解百度持续定位方面还是讲解的有些不清楚,本人研究了几次之后将其弄
- 本文实例为大家分享了Android实现支付宝支付密码输入界面的具体代码,供大家参考,具体内容如下效果图:主要代码:import java.u
- 一个发送验证码的需求:包括限制文本框输入长度和只允许输入数字按惯例 先上图:class MyBody extends StatefulWid
- 静态代理: 由我们开发者自己手动创建或者在程序运行前就已经存在的代理类,静态代理通常只代理一个类, * 是代理一个接口下的多个实现类。动态
- 通过本篇文章主要给大家讲解了在JAVA开发中Servlet3.0异步处理遇到的问题以及处理办法,以下是具体内容:Servlet 3.0 开始
- 我们编程的过程中大部分使用了很出色的ORM框架,例如:MyBatis,Hibernate,SpringJDBC,但是这些都离不开数据驱动JD
- 前言悬浮窗是一种比较常见的需求。例如把视频通话界面缩小成一个悬浮窗,然后用户可以在其他界面上处理事情。本文给出一个简单的应用内悬浮窗实现。可
- IOS与网页JS交互随着移动APP的快速迭代开发趋势,越来越多的APP中嵌入了html网页,但在一些大中型APP中,尤其是电商类
- 本Demo为练手小项目,主要是熟悉目前主流APP的架构模式.此项目中采用MVC设计模式,纯代码和少许XIB方式实现.主要实现了朋友圈功能和摇
- 1. 什么是对象池对象池,顾名思义就是一定数量的已经创建好的对象(Object)的集合。当需要创建对象时,先在池子中获取,如果池子中没有符合