文章大部分来源bugly,加了部分个人理解
一.基本介绍
HTTPS S可以指的TLS(安全传输层),也可以是SSL(安全套接层),或者可以抽象的的概括HTTP+Security(这种理解比较直接)。
二.举个栗子
简单的描述 上课传纸条 吊丝A 要传给 妹子A ,中间有个同学M
问题1
如果直接用http也就是不加密,那就纸条的内容会被同学M看明白、
解决方法1
1.跟妹子A约定一个暗号,例如用某个字母代替某个字,这种加密算法现在一般用的是AES(高级加密算法)的对称算法(简单的说就是加密解密用的同一个Key).
问题2
那么问题来了,怎么把这个暗号告诉这个妹子,课下单独约定,这个可以有但是实际网络中,这个是不怎么可行的,所以只能把这个暗号的规则一起发过去,但是这样同学M还是能看懂纸条写了啥?所以这样也不安全
解决方法2
用另外一种加密算法,非对称算法,这种算法产生两个密钥(key1和key2),key1加密的数据,key1不能解密,只有key2才能解密,同理key2加密,只有key1才能解密,现在最常用的是RSA,按照下图的方式就可以愉快的通信了
问题3
但是问题来了,为什么妹子A不直接用K1加密content传给吊丝A?
解决方法3
因为非对称的加密解密的平均消耗时间比较长,为了节省时间提高效率,所以只是用来互相告诉暗号(也就是对称加密算法的K3)
问题4
如果中间的同学M暗恋你想知道纸条内容,把你给妹子A的纸条扣下来,然后假装自己是妹子A,同样给你返回了一个对称算法加密的K4,然后发给你,同时同学M假装成吊丝A跟妹子A完成一个一次密钥交换得到K3,这样M就知道纸条内容,但是吊丝A和妹子A都不知道同学M已经知道他们的秘密了。
解决方法4
这个时候提现HTTPS和传纸条的区别了,在这个例子中,吊丝A和妹子A是一个几乎对等的对象,但是在网络上,访问网站时,一般访问的都是比较大的服务者,他们可以证明自己的合法性(用一个非常权威的第三方,一个专门用来认证网站合法性的组织,简称CA(certificate Authority)),各个网站服务商可以向CA申请证书,使得他们在建立连接时可以带上CA给的签名,而CA的安全性由操作系统或者浏览器来认证(Windows,Mac,Linux,Chrome,Safari在安装的时候带上一个他们认为安全的CA证书列表,只有那些网站带着的CA在这个列表里面才会被认为是安全的,注意:一旦某个CA颁发的证书被用于非法途径,那么值钱颁发过的所有证书都被视为不安全的!!!)