QPing's blog

HTTPS原理

HTTPS,也称作HTTP over TLS,TLS的前身是SSL。和HTTP相比,HTTPS提供了服务器的身份认证、对传输数据进行加密。我们知道HTTP传输时,如果客户端请求服务器,那么黑客可以通过抓包等手段来获取通信数据,甚至可以模拟服务器和客服端通信。无法满足购物、支付、私密信息发布等等场景的安全性要求,HTTPS就解决了这个问题。

1 数据加密

怎么保证数据安全呢?直觉反应就是数据加密,数据加密有非对称加密和对称加密,如果每次都将通信内容进行非对称加密,速度慢且浪费资源。为了兼顾安全和效率,在通信的一开始,客户端随机生成一个随机数,使用公钥加密后传输给服务端,服务端接收后使用私钥解密获取随机数。以后的通信过程使用这个随机数来对称加密数据。

2 CA机构

那么有个问题,客户端如何获取公钥?如果把公钥放在服务器上,供客户端下载,黑客可以拦截客户端请求,伪造假的公钥,如此一来整个过程又不安全了。这时候需要引入第三方机构CA,来保证公钥不被篡改。

CA将给服务器所有者颁发证书,证书中包含:

  • 证书信息:过期时间和序列号
  • 所有者信息:姓名等
  • 所有者公钥

当客户端发来请求时,服务器首先返回证书给客户端,客户端验证证书是否是CA颁发。如果确定无误,再发送随机数到服务器端,进行后续的通信。

3 数字签名

客户端如何验证证书是否合法呢?CA会将证书使用hash算法获得摘要1,然后签名存在证书里。客户端接收到证书后,使用同样的hash算法获得摘要2,然后将证书中的签名解码获得摘要1,进行比较,如果通过则合法。CA的公钥一般是要预置在操作系统的。所以整体的信任链是,客户端信任CA,CA颁发证书,证书合法,客户端信任服务器。


以下评论区域 0 Comments


  • 昵称:
  • 邮箱:
  • 内容: