美文网首页
移动开发通信之https加密协议SSL/TLS理解

移动开发通信之https加密协议SSL/TLS理解

作者: 树懒啊树懒 | 来源:发表于2017-09-17 13:42 被阅读87次

    上篇移动开发通信之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.pemprivateKey.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

    相关文章

      网友评论

          本文标题:移动开发通信之https加密协议SSL/TLS理解

          本文链接:https://www.haomeiwen.com/subject/lvppsxtx.html