Https
...大约 2 分钟TCP/IP计网
HTTP 是明文传输协议,HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全

Client发起一个HTTPS的请求
Server把事先配置好的公钥证书返回给客户端。
Client验证公钥证书:比如是否在有效期内,证书的用途是不是匹配Client请求的站点,是不是在CRL吊销列表里面,它的上一级证书是否有效,这是一个递归的过程,直到验证到根证书(操作系统内置的Root证书或者Client内置的Root证书),如果验证通过则继续,不通过则显示警告信息。
Client使用伪随机数生成器生成加密所使用的对称密钥,然后用证书的公钥加密这个对称密钥,发给Server。
Server使用自己的私钥解密这个消息,得到对称密钥。至此,Client和Server双方都持有了相同的对称密钥。
如果客户端不使用私钥,则会发生,服务端拿到的是加密的内容,但是发送给客户端时,就会是明文了
Server使用对称密钥加密明文内容A,发送给Client。
Client使用对称密钥解密响应的密文,得到明文内容A。
Client再次发起HTTPS的请求,使用对称密钥加密请求的明文内容B,然后Server使用对称密钥解密密文,得到明文内容B。
数字证书
有几个问题:
- 怎么能保证收到的公钥是网站还是中间人的?
- 我们如何相信"数字证书"就是由信任的CA颁发的呢?
- 怎么一会儿公钥加密,一会儿私钥加密呢?
公钥加密--->私钥解密:加密后,只能是拥有私钥的人才能解密,因此用来加密信息就很好
私钥加密--->公钥解密(私钥签名,公钥验签):只能是拥有私钥的人才能加密,但理论上谁都能解密
用顶层的私钥给下层的证书签名,验证的时候,用顶层的公钥,来验证下层的签名。