Https

tim-qtp...大约 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。

数字证书

有几个问题:

  1. 怎么能保证收到的公钥是网站还是中间人的?
  2. 我们如何相信"数字证书"就是由信任的CA颁发的呢?
  3. 怎么一会儿公钥加密,一会儿私钥加密呢?

公钥加密--->私钥解密:加密后,只能是拥有私钥的人才能解密,因此用来加密信息就很好

私钥加密--->公钥解密(私钥签名,公钥验签):只能是拥有私钥的人才能加密,但理论上谁都能解密

用顶层的私钥给下层的证书签名,验证的时候,用顶层的公钥,来验证下层的签名。