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

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

(0)

相关推荐

  • 使用httpclient无需证书调用https的示例(java调用https)

    使用httpclient无需证书调用https的url地址,传输字节流. 复制代码 代码如下: package com.paic.hmreport.metaQ; import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.ByteArrayInputStream;import java.io.FileOutputStream;import java.io.IOException;import ja

  • Java Classloader机制用法代码解析

    做Java开发,对于ClassLoader的机制是必须要熟悉的基础知识,本文针对Java ClassLoader的机制做一个简要的总结.因为不同的JVM的实现不同,本文所描述的内容均只限于Hotspot Jvm. 本文将会从JDK默认的提供的ClassLoader,双亲委托模型,如何自定义ClassLoader以及Java中打破双亲委托机制的场景四个方面入手去讨论和总结一下. JDK默认ClassLoader JDK 默认提供了如下几种ClassLoader Bootstrp loader Bo

  • java开发https请求ssl不受信任问题解决方法

    本文主要讨论的是java开发https请求ssl不受信任的解决方法,具体分析及实现代码如下. 在java代码中请求https链接的时候,可能会报下面这个错误 javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unab

  • Java Web stmp发送带附件邮件(附SSL版)

    本文实例为大家分享了Java Web stmp发送带附件邮件的具体代码,供大家参考,具体内容如下 public class MailFileSendUtils { private Properties props; //系统属性 private Session session; //邮件会话对象 private MimeMessage mimeMsg; //MIME邮件对象 private Multipart mp; //Multipart对象,邮件内容,标题,附件等内容均添加到其中后再生成Mi

  • 纯Java实现数字证书生成签名的简单实例

    package com.ylsoft.cert; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.security.InvalidKeyException; import java.security.KeyPair; import java.security.KeyPairGenerator;

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

    打开我们首页,明显看到链接是https打头,https和http的通信协议差别,在于https安全性更高: http和https的差别 很明显,二者最大的区别在于https多了一个ssl证书验证,可以说https是身披SSL外壳的http.因为http存在如下缺陷: 1)通信使用明文,内容可能被窃听(重要密码泄露) 2)不验证通信方身份,有可能遭遇伪装(跨站点请求伪造) 3)无法证明报文的完整性,有可能已遭篡改(运营商劫持) 而https是利用SSL/TLS建立全信道,加密数据包.HTTPS使用

  • IOS开发 支持https请求以及ssl证书配置详解

    IOS开发 支持https请求以及ssl证书配置详解 前言: 众所周知,苹果有言,从2017年开始,将屏蔽http的资源,强推https 楼主正好近日将http转为https,给还没动手的朋友分享一二 一.证书准备 1.证书转换 在服务器人员,给你发送的crt证书后,进到证书路径,执行下面语句 // openssl x509 -in 你的证书.crt -out 你的证书.cer -outform der 这样你就可以得到cer类型的证书了.双击,导入电脑. 2.证书放入工程 1.可以直接把转换好

  • java结合keytool如何实现非对称签名和验证详解

    前言 本文主要介绍了关于java结合keytool实现非对称签名和验证的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 参考 还有姊妹篇:java结合keytool实现非对称加密和解密 keytool的使用 keytool是JDK自带的一个密钥库管理工具.这里只用到了keytool的部分功能,包括生成密钥对,导出公钥等.keytool生成的公钥/私钥对存放到一个到了一个文件中,这个文件有密码保护,通称为keystore. 生成密钥对 $ keytool -genkey

  • 微信小程序 后台https域名绑定和免费的https证书申请详解

    微信小程序 后台https域名绑定和免费的https证书申请详解 微信小程序在11月3号发布了,这是一个全新的生态,没有赶上微信公众号红利的开发者,运营者可别错过这趟车了. 但是微信的后台需要全https,之前我还不相信,后台注册了后进后台才发现,服务器配置如下图 从后台的服务器配置可以看出 (1)微信小程序后台只支持https,如果公司后台还没支持https的,赶紧要升级了 (2)API请求,文件上传,socket 文件上传和下载,必须是在后台配置的,否则微信不允许你下载       另外,h

  • Python SSL证书验证问题解决方案

    这篇文章主要介绍了Python SSL证书验证问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.SSL问题 1.在你不启用fiddler时,python代码直接发送https请求,不会有SSL问题(也就是说不想看到SSL问题,关掉fiddler就行) 2.启用fiddler会报出以下错误: raise SSLError(e, request=request) requests.exceptions.SSLError: HTTPSC

  • Python requests的SSL证书验证方式

    目录 requests的SSL证书验证 1.对于HTTPS 2.以上步骤后,会出现警告 requests处理不信任的ssl证书 不验证ssl证书 requests的SSL证书验证 1.对于HTTPS 默认情况下,启用SSL验证,如果无法验证SSL证书会导致: requests.exceptions.SSLError: ("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate ve

  • Linux Nginx 配置SSL访问实例详解

    Linux Nginx 配置SSL访问实例详解 生成证书 可以通过以下步骤生成一个简单的证书: 首先,进入你想创建证书和私钥的目录,例如: $ cd /usr/local/nginx/conf 创建服务器私钥,命令会让你输入一个口令: $ openssl genrsa -des3 -out server.key 1024 创建签名请求的证书(CSR): $ openssl req -new -key server.key -out server.csr 在加载SSL支持的Nginx并使用上述私钥

  • Java Fluent Mybatis 分页查询与sql日志输出详解流程篇

    目录 前言 准备数据 Sql日志配置 官方分页查询 PageHelper分页查询 总结 前言 接着我上一章:Java Fluent Mybatis 项目工程化与常规操作详解流程篇 下 上一章我把项目做了一部分工程化包装,主要还是想要之后的调试能够方便一些.那么这一章接着上一章的内容,做一下查询分页,并且将每次请求所调用的sql语句写在日志里面,便于我们观察定位问题.代码之后还是会上传到github. GitHub代码仓库地址:GitHub仓库 准备数据 简单的准备了一些数据. Sql日志配置 之

  • Java实现超简单抖音去水印的示例详解

    目录 一.前言 二.原理与步骤 三.代码实现 四.总结 一.前言 抖音去水印方法很简单,以前一直没有去研究,以为搞个去水印还要用到算法去除,直到动手的时候才发现这么简单,不用编程基础都能做. 二.原理与步骤 其实抖音它是有一个隐藏无水印地址的,只要我们找到那个地址就可以了 1.我们在抖音找一个想要去水印的视频链接 注意:这里一定要是https开头的,不是口令 打开浏览器访问: 访问之后会重定向到这个地址,后面有一串数字,这个就是视频的id,他是根据这个唯一id来找到视频播放的 按F12查看网络请

  • Java之jdbc连接mysql数据库的方法步骤详解

    Java:jdbc连接mysql数据库 安装eclipse和mysql的步骤这里不赘述了. 1.一定要下jar包 要想实现连接数据库,要先下载mysql-connector-java-5.1.47(或者其他版本)的jar包.低版本的jar包不会出现时差问题的异常. 建议在下载界面点右边的"Looking for previous GA versions?"下载低版本的. https://www.jb51.net/article/190860.htm我看的是这个教程. 2.mysql前期

随机推荐