网络基础 记一次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”告警按钮等
-> 如果证书有效、或者是授信安装证书后,开始传送加密信息(用证书加密后的随机值,供加解密使用)
-> 服务端通过私钥解密加密信息,得到客户端发送来的随机值,然后把内容通过该值进行对称加密。这样一来,除非知道私钥,否则是无法获取加密内容的。
-> 服务端返回加密后的内容
-> 客户端通过前面提到的随机值对加密信息进行解密
作者:授客
微信/QQ:1033553122
全国软件测试QQ交流群:7156436
Git地址:https://gitee.com/ishouke
友情提示:限于时间仓促,文中可能存在错误,欢迎指正、评论!
作者五行缺钱,如果觉得文章对您有帮助,请扫描下边的二维码打赏作者,金额随意,您的支持将是我继续创作的源动力,打赏后如有任何疑问,请联系我!!!
微信打赏
支付宝打赏 全国软件测试交流QQ群
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库