why https?

解决了三个问题:

1.通信的安全性

2.通信双方身份的真实性

3.通信内容的完整性

如何解决这三个点

安全性:

Server端用非对称加密,将双方要进行的对称加密密钥加密,然后Browser端利用公钥解析,得到双方要通信时使用的对称加密密钥

通信双方身份的真实性:

证书。但怎么保证证书会不会伪造呢?颁发证书的人由更权威的人颁发证书,一层一层,到最权威的几个机构(CA)。12306的证书就是自己做的

完整性:

用哈希算法提取摘要,对摘要进行加密,根据摘要解密验证通信内容的完整性

https整体流程

1.客户端发送报文,包括ssl版本,可用算法列表,密钥长度。

2.若服务端支持,返回相应的报文

3.服务器发送证书到客户端

4.客户端发送client key exchange报文,使用3中证书公钥匙加密(客户端用非对称加密中的公钥将对称加密中的密钥加密给服务端)

5.服务端使用私钥解析好后返回相应,提示ssl通信环境搭建好

6.开始正常的http通信