上篇移动开发通信之http/https概念-优缺点-选择说到 :
https = http协议 + TLS协议。【默认443端口】
要理解HTTPS协议,首先需要明白什么是SSL/TLS。SSL全称“Secure Sockets Layer”,意思为安全套接层。其实由网景公司为了解决HTTP传输协议在安全方面的缺陷而设计的。后来被标准化,更名为TLS,全称“Transport Layer Security”,意思为传输层安全协议。
一、SSL是如何加密的?
通过前面所介绍,我们知道HTTPS主要是希望解决3个问题:数据加密、完整、真实。那么下一步就是如何解决这些问题,数据加密在发送数据前依赖SSL层对数据进行加密,数据完整与真实性则要靠另一种关键技术:数字证书。
我讲个送快递的故事吧!
5个成员:买家小妹 ,商家,快递员,淘宝平台,骗子🤥
剧情:买家向商家购买一台iPhone X,商家快递发货
买家地址:太阳公寓
太阳公寓楼下:
快递员:拨打电话...您好,快递到楼下了,来取下。
买家小妹:好的,马上下来。
(小妹见到快递员)
快递员:你是小妹吗?
买家小妹:是的。
快递员:快递拿走。
😓下来美女就是买家本人吗?万一是小姨子内...
快递员:你是小妹吗?
骗子🤥:是的。
快递员:快递拿走。 【😆这不,快递被骗子拿走了】
快递员警觉性高的话:
快递员:你是小妹吗?
骗子🤥:是的。
快递员:包装物品取件码?(包装相当于加密,每件物品对应唯一快递单号)
骗子🤥:额...懵逼了,【被拒绝,伤心】
买家小妹本人:
买家小妹:取件码8888
快递员:打开淘宝输入取件码和快递单号 验证(一个取件码对应一件物品),校验成功,取走吧!
那么问题来了.....
问题一:取件码怎么来的?
情况(1x):商家直接给买家,然后维护一个本本记录。
答:直接给码(相当于加密公钥),给的过程难免会出纰漏,信息拦截等等,骗子直接拿验证码去领取物品。
情况(2√):取件码不是商家直接给的,统一由淘宝平台管理。
答:下面我用processon简单模拟下部分流程:
buyiphoneX2.png
从上图可以看出,卖家【服务器】的公钥key不是给买家【客户端】,而是给【信任的】淘宝【第三方机构CA】,通过CA机构来发证书和校验,这些个流程的目的是:确认数据完整与真实性(证明你就是买家本人等等),取件码我们取名曰:【数字证书】,我们辛苦的快递员【传输层】,骗子当然是【黑客】。
问题二:为什么选淘宝,它值得信赖吗,其他机构呢?自己给自己颁发证书呢?
答:是的,还可以京东,哈哈。为什么从CA机构签发证书,因为权威和标准,当然不止这一家,你都可以选择,看你自己。
当然也可以自己给自己颁发证书,下面以Mac电脑为例:
打开钥匙串:
完成上面操作后,双击证书安装到电脑,选择证书右键,导出p12文件(需要设置密码)。.p12文件其实是复合文件,其中包装了私钥与证书信息,使用OpenSSL工具可以将其中的信息进行提取。
打开终端,cd到xxxx.p12文件目录,使用如下命令分解(需要输入p12密码):
openssl pkcs12 -in huishao.p12 -nocerts -out privateKey.pem -nodes
使用如下命令将.p12文件中的证书分解出来(需要输入p12密码):
openssl pkcs12 -in huishao.p12 -nokeys -out cert.pem -nodes
完成后生成两个文件,分别为cert.pem
与privateKey.pem
,他们就是证书文件与密钥文件。
问题三:服务器从CA机构获取证书难道不会被掉包?
答:管理员掏钱给CA,CA颁发给我们的网站管理员,而我们的管理员再将这个数字证书布置我们的服务器上,不是发请求获取的。
问题四:客户端又是如何鉴别证书?
答:浏览器和操作系统都会维护一个权威的第三方机构列表(包括它们的公钥)。因为客户端接收到的证书中会写有颁发机构,客户端就根据这个颁发机构的值在本地找相应的公钥。
如果你打开12306购票或者自己创建证书,就会发现提示你网站不被信任,意思就是它不在被维护列表中。
需要点击高级--->添加信任,不然无法访问。
问题五:如果CA机构和浏览系统被黑?
答:自求多福😓
移动开发通信之get/post理解和使用
移动开发通信之API接口安全设计
参考学习:
https://my.oschina.net/u/2340880/blog/807358
https://showme.codes/2017-02-20/understand-https/
https://cattail.me/tech/2015/11/30/how-https-works.html
网友评论