Https原理

https原理

https是什么

https = http + SSL/TLS

目前,应用最广泛的是TLS 1.0,接下来是SSL 3.0。但是,主流浏览器都已经实现了TLS 1.2的支持。

TLS 1.0通常被标示为SSL 3.1,TLS 1.1为SSL 3.2,TLS 1.2为SSL 3.3。

https基本原理

非对称加密

公钥加密私钥解密,私钥加密公钥解密。

数字证书

为了防止私钥被串改,搞出了一个数字认证中心,数字认证中心是一个权威机构值得信赖(可以理解为人民银行)。

基本原理

web服务器端将公钥提供给数字认证中心,中心将web服务端的公钥用自己的私钥加密,然后将中心的公钥向社会发布(证书)。浏览器拿到证书向中心验证,并获取web服务器的公钥。然后就可以正常通信了。

https通信过程

  1. 浏览器发起往服务器的 443 端口发起请求,请求携带了浏览器支持的加密算法和哈希算法。
  2. 服务器收到请求,选择浏览器支持的加密算法和哈希算法。
  3. 服务器下将数字证书返回给浏览器,这里的数字证书可以是向某个可靠机构申请的,也可以是自制的。
  4. 浏览器进入数字证书认证环节,这一部分是浏览器内置的 TSL 完成的:
    1. 首先浏览器会从内置的证书列表中索引,找到服务器下发证书对应的机构,如果没有找到,此时就会提示用户该证书是不是由权威机构颁发,是不可信任的。如果查到了对应的机构,则取出该机构颁发的公钥。
    2. 用机构的证书公钥解密得到证书的内容和证书签名,内容包括网站的网址、网站的公钥、证书的有效期等。浏览器会先验证证书签名的合法性。签名通过后(用机构的公钥解密证书签名得到的哈希值和证书内容的哈希值匹配),浏览器验证证书记录的网址是否和当前网址是一致的,不一致会提示用户。如果网址一致会检查证书有效期,证书过期了也会提示用户。这些都通过认证时,浏览器就可以安全使用证书中的网站公钥了。
  5. 浏览器生成一个随机数 R,并使用网站公钥对 R 进行加密。
  6. 浏览器将加密的 R 传送给服务器。
  7. 服务器用自己的私钥解密得到 R。
  8. 服务器以 R 为密钥使用了对称加密算法加密网页内容并传输给浏览器。
  9. 浏览器以 R 为密钥使用之前约定好的解密算法获取网页内容。

你可能感兴趣的:(backend)