今天讨论两个问题:
1.Http和Https的区别什么?
2.关于Http和Https,移动端测试时需要关注什么?
这里说的区别是建立在联系上的,所以下面将联系的说区别。Http和Https都是位于OSI(计算机或通信系统间互联标准体系)的第七层:应用层,位于该层的还有SMTP和FTP协议。Http协议运行在TCP之上。所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份。
Https是Http运行在SSL/TLS(安全套接字层/传输层安全)之上,SSL/TLS运行在TCP之上。所有传输的内容都经过加密,加密采用对称加密,但对称加密的密钥用服务器方的证书进行了非对称加密。此外客户端可以验证服务器端的身份,如果配置了客户端验证,服务器方也可以验证客户端的身份。
一句话:Http+加密+认证+完整性保护=Https
下图附带Http和Https的区别对比:
说到这里,只是有一个概念上的初步认识,Http和Https的过程究竟是怎样,还是没有一个清晰的理解,于是乎想进一步了解下具体的过程是怎样的。下图来自网络,清楚的展示的Https过程,贴上来,便于理解。
上图整个过程就是Https过程,可以这样理解,去除prepare部分、去除步骤2、3、4部分就是Http过程,只是Http中客户端和服务器通信时没有加密(步骤5、6去掉加密)。
============================分割线==========================
为了便于理解记忆,我编了一个小故事。
第一话:古代某国边塞驻扎着10万大军。一日,狼烟四起,外敌来犯,为平息叛乱,皇帝πA将军去平息边关战事,临行前,皇帝给A将军一行送行,将一枚敕造铜质虎符的一半交与将军,说道:“虎符合并时,边关10万大军,凭此全符调遣,见符如见寡人,切记妥善保管,不可有丝毫缺损。”【对应图中prepare3过程】
第二话: 数日后,A将军抵达边塞大营,驻地B将军再三确认A将军身份,于是乎要求A将军拿出另一半虎符进行拼对,虎符无缝隙对接,确系A将军是皇帝派来的“定边大将”,可与B将军共同统领10万大军。【对应图中1、2、3过程】
第三话:边关大军与来犯敌军两军对阵,排兵布阵通过鼓声号令,重鼓三声,大军前进30步,急鼓5声,方阵变换,骑兵出击,步兵合围。两军展开了激烈的对战……【对应图中5、6过程】
============================分割线===========================
额外说一点:
谷歌宣布从今年9月份,随着Chrome 69 的发布,将停止在地址栏中标记 HTTPS 页面为“安全”站点,在10月份,随着 Chrome 70的发布 ,当用户输入数据时,HTTP 站点将显示一个红色的“不安全”警告。这么做的原因是,谷歌认为“用户应该默认 Web 是安全的,Chrome 应该只会在网页有问题时才发出警告”,同时这也是谷歌“HTTPS 100%”计划的一部分,最终目的是让加载到 Chrome 中页面都通过 HTTPS 协议。
接下来说第二个问题:测试时分别需要关注什么。
说到这个问题,有点麻爪。作为移动端QA,目前我们都只是用到Http和https协议,测试时对协议本身关注点很少,仅想到一下两点:
1.因为Https过程比Http过程复杂,因此一个Https请求/响应的时间会比Http长。举个栗子,相同网络情况下,通过Charles抓包,Https的Duration为968ms,Http的Duration为729ms,两者的相差时间很小,几乎无感;
2.Https存在CA证书,需要关注证书的有效时限。但是这个一般也是很少关注的点。
我也只是想到了可能搭边的点,自己都不能说服自己。后续更新……
最后附上OSI7层协议图。