浅析HTTPS及测试注意事项

本文章转载于搜狗测试

问题

前段时间小编在测试过程中遇到过这样一个问题:手机连接Fiddler抓取泛灵犀图片请求,在客户端部分图片无法显示,如图。问题排查过程中发现HTTP请求的图片可以正常显示,HTTPS请求的图片都无法显示。

浅析HTTPS及测试注意事项_第1张图片

解决方案

经查阅资料,问题得到了完美解决,解决方案如下:

方案一:

1)打开Fiddler中的Tools→Fiddler Options→HTTPS,勾选 Capture HTTPS CONNECTs,勾选 Decrypt HTTPS trafic;

2)重启Fiddler,再次进入 HTTPS 选项卡,点击右侧Actions,能看一个下拉菜单,点击 Export Root Certificate to Desktop,此时证书会生成到桌面上,名为 FiddlerRoot.cer,点OK保存

3)android手机连接到电脑上,从电脑上打开手机的内存卡,直接把证书导入SD卡中

4)进入手机中的设置——>安全——>从SD卡安装——>从内部存储空间中找到证书,点击安装

方案二:

1)同上述步骤一;

2)在手机浏览器地址栏中输入ip:端口号,下载证书后安装即可

浅析HTTPS及测试注意事项_第2张图片

HTTPS原理

我们都知道HTTP并非是安全传输,而HTTPS是相对安全的,在传输数据之前,需要客户端和服务进行一次握手,在握手过程中确立双方加密传输数据的密码信息,然后在后续通信过程中就使用协商密钥进行对称加密通信。具体过程见下图:

1)客户端发起HTTPS请求

即用户在浏览器里输入一个https网址连接到服务器端口。

2)服务端初步响应

采用HTTPS协议的服务器必须要有一套数字证书,这套证书其实就是一对公钥和私钥,可以想象成一把钥匙和一个锁头,只有你一个人有这把钥匙,你可以把锁头给别人,别人可以用这个锁把重要的东西锁起来,然后发给你,因为只有你一个人有这把钥匙,所以只有你才能看到被这把锁锁起来的东西。将证书发回给浏览器,证书包含证书的颁发机构、过期时间等。

3)客户端解析证书

客户端首先会验证证书是否有效,比如颁发证书的机构是否合法,证书中包含的网站地址是否与正在访问的地址一致、过期时间等,如果发现异常,则提示证书存在问题(小编在测试过程中就遇到了类似的问题:在手机上安装了HTTPS证书后,客户端仍然无法展示图片,原因就是后调了手机时间,该时间没有在证书的时间范围内,导致客户端解析证书失败)。如果证书没有问题,那么客户端就生成一个随机值,然后用证书对该随机值进行加密。

4)客户端发送加密信息

客户端发送的是用证书加密后的随机值。

5) 服务器解密信息

服务端用私钥解密后,得到了客户端传过来的随机值,然后把内容通过该值进行对称加密(所谓对称加密就是将信息和私钥通过某种算法混合在一起)。

6)服务器发送加密后的信息

服务器发送的是服务端用随机值进行对称加密后的信息。

7) 客户端解密信息

客户端用之前生成的随机值解密服务端传过来的信息,客户端就获取了解密后的内容。

Fiddler本身就是个很好的代理工具,可抓取协议请求用于调试。在HTTPS原理图上,客户端与服务器端进行通信的过程全部都由Fiddler获取到,如下图所示:

浅析HTTPS及测试注意事项_第3张图片

测试注意事项

1)手机连接Fiddler后,需要安装证书

2)证书是有有效期的,查看方式:

3)手机时间正确

所有的证书都有颁发日期和截止日期,手机时间不对就有可能导致https证书无效

4)适配手机网络

WIFI、三大运营商的4G/3G/2G

你可能感兴趣的:(浅析HTTPS及测试注意事项)