网络基础 记一次HTTPS证书验证测试过程
记一次HTTPS证书验证测试过程
by:授客 QQ:1033553122
实践
1) 安装证书
选择主机A(假设10.202.95.88)上安装https证书
说明:采用https的服务器,必须安装数字证书,这个可以是自己制作,也可以想组织申请,区别在于自己颁发的证书,需要客户端验证通过,才可以继续访问(常见的就是浏览器弹窗,提示是否信任该网站),而由像组织申请的受信任证书则不会弹出该提示。
2) 配置本地DNS
选择主机B(假设10.202.95.38,能访问10.202.88.151),配置本地DNS,在/etc/hosts中添加如下内容
10.202.88.151 xxx.sf-express.com
说明:10.202.88.151为负载VIP,如下,访问负载vip时,会随机转发至集群节点主机
10.202.88.151 ->10.202.95.88
10.202.88.151 ->10.202.95.87
然后在主机B上,发起https下载请求
$ wget https://xxx.sf-express.com/
--2017-10-24 17:08:58-- https://xxx.sf-express.com/
Resolving xxx.sf-express.com... 10.202.88.151
Connecting to xxx.sf-express.com|10.202.88.151|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 59054 (58K) [text/html]
index.html: Permission denied
Cannot write to ?.ndex.html?.(Success).
说明:
1)不能用curl替换wget命令发起请求,会报无法进行SSH连接,至于为何,我也不清楚。
$ curl https://xxx.sf-express.com/
curl: (35) SSL connect error
2)如上,我们可以很清楚的看到请求过程,先是本地DNS解析,->然后通过443端口,请求连接到目标主机->接着,发送HTTP请求,-->等待服务器返回
进一步验证,直接发送请求,不过这一次不通过域名访问,直接通过IP访问。
$ wget https://10.202.88.151/
--2017-10-24 17:09:24-- https://10.202.88.151/
Connecting to 10.202.88.151:443... connected.
ERROR: certificate common name ?.engta.sf-express.com?.doesn't match requested host name ?.0.202.88.151?.
To connect to 10.202.88.151 insecurely, use ?.-no-check-certificate?.
说明:如上,这里利用了“服务器返回证书中包含有效网址,客户端校验证书时会比较请求的网址和服务器给的证书中的网址是否一致”这个特性,来验证证书是否正常运作。
大致原理
-> 客户端发送https请求,把自身支持的秘钥算法套件发送给服务器
-> 服务器判断自身是否支持该算法套件,如果支持则返回证书信息(本质为公钥,包含了证书颁发机构,网址,过期时间等) ,否则断开连接,
-> 客户端解析证书(通过TLS协议来完成),验证证书是否有效。如果异常,则会提示是否安装证书,常见的就是浏览器搜索栏左侧出现“X”告警按钮等
-> 如果证书有效、或者是授信安装证书后,开始传送加密信息(用证书加密后的随机值,供加解密使用)
-> 服务端通过私钥解密加密信息,得到客户端发送来的随机值,然后把内容通过该值进行对称加密。这样一来,除非知道私钥,否则是无法获取加密内容的。
-> 服务端返回加密后的内容
-> 客户端通过前面提到的随机值对加密信息进行解密
网络基础 记一次HTTPS证书验证测试过程的更多相关文章
- Retrofit+OKHttp忽略https证书验证
记录这个的原因,是因为很多时候,因为后台配置的证书不正确导致APP访问不到服务器数据,导致影响自身的开发进度.没几行代码,逻辑也清晰,所以下面就直接贴出工具类吧: package huolongluo ...
- java httpclient跳过https证书验证
httpclien调用skipHttpsUtil得wrapClient方法跳过https证书验证 SkipHttpsUtil skipHttpsUtil=new SkipHttpsUtil(); ...
- 【腾讯Bugly干货分享】iOS 中 HTTPS 证书验证浅析
本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/-fLLTtip509K6pNOTkflPQ 导语 本 ...
- iOS 绕过https证书验证 请求数据
HTTPS和HTTP: 1.https协议需要到ca申请证书,一般免费证书很少,需要交费. 2.http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议. 3.http ...
- 解决https证书验证不通过的问题
1.报错信息 java.security.cert.CertificateException: No name matching api.weibo.com found; nested excepti ...
- .net core中引用webservice,并忽略https证书验证
1.打开vs, 工具-->扩展和更新 下载这个 2. 在admin下右键,添加-->connected service 选择wsdl文件路径,或者服务的url,比如https://**** ...
- 解决 https 证书验证不通过的问题
解决的办法:忽略服务端和客户端的证书校验即可.java 提供的相关的类. 通过重写TrustManager的checkClientTrusted(检查客户端证书信任)和checkServerTrust ...
- SVN提示https证书验证失败问题svn: E230001: Server SSL certificate verification failed:
最近在使用Idea 检出 svn项目时,出现了如下的画面 显示需要授权证书,需要证书路径 搜索网上的解决方式:无非以下几种 1.File->Settings->Version Contro ...
- #WEB安全基础 : HTTP协议 | 0x16 HTTPS:证书,证书,全是证书
现在想做点什么事都需要证书,要不就会让我们回忆起一个典故:滥竽充数 HTTPS使用了公开密钥加密,如何保证公开密钥就是真正的公开密钥呢?攻击者可能会替换公开密钥,这时候就需要验证,所以它采用了数字证书 ...
随机推荐
- 教你使用docker部署淘宝rap2服务
什么是rap2 先来说说起因,在上一个星期的分享会上,谈到前后端联调上,有同事提到了rap2,特意去了解了一下,觉得使用这个东西来进行前后端的接口联调来真是太方便了,对比我们之前公司内部开发的API ...
- Django-用户模块与权限系统相关
Django的用户模块与权限系统 Django的用户系统都提供哪些功能: 提供用户模块(User Model) 权限验证(默认添加已有模块的增加删除修改权限) 用户组与组权限功能 用户鉴权与登录功能 ...
- Android数据保存之文件保存
前言: 上一篇文章写了在Android中利用SharedPreferences保存数据,SharedPreferences在保存数据的时候主要是保存一些应用程序的设置信息或者少量的用户信息,并且是以k ...
- 微信分享config:ok 但自定义内容无效
一.问题 使用微信 JSSDK 分享,出现自定义内容无效 ,也就是分享出去的内容不是你配置的内容. 但在调试过程中发现 congfig 都是 ok 的 二.解决 检查config 配置是否正确 js ...
- 使用IntelliJ IDEA新建Java Web后端resfulAPI模板
初始化项目 打开IntelliJ IDEA,我的版本是Version 2018.1.4.点击Create New Project.在左侧的列表中选择Maven.然后在右侧勾选Create from a ...
- MySQL:测试题
一,表关系的练习测试 请创建如下表关系,并建立相关约束 一,创建表结构数据: 创建的话肯定先创建没有关联的表,老师,课程(关联老师),年级,班级(关联年级),学生(关联班级), 班级任职表 (关联老师 ...
- 垂直居中—3行CSS3代码
方法一: .element { position: relative; top: 50%; transform: translateY(-50%); } 这用用的好处了,无论是块级元素还是行内元素,都 ...
- Nacos系列:欢迎来到Nacos的世界!
什么是Nacos? Nacos 是构建以"服务"为中心的现代应用架构 (例如微服务范式.云原生范式) 的服务基础设施. Nacos可以做什么? 1.动态配置服务:支持以中心化.外部 ...
- PAT之气死人不偿命的3n+1猜想
卡拉兹(Callatz)猜想: 对任何一个自然数n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把(3n+1)砍掉一半.这样一直反复砍下去,最后一定在某一步得到n=1.卡拉兹在1950年的世界数 ...
- 一个Android常用的组件收集
Android笔记之ViewPager实例一:制作欢迎引导界面:http://www.cnblogs.com/xingyyy/p/3335705.html Fragment 实现底部菜单栏:http: ...