1.6 HTTPS

HTTPS即HTTP over Transport Layer Security,亦称HTTP over SSL或HTTP Secure,简单说就是加密的HTTP。因为HTTP本身并不安全,通过它传输敏感信息(如用户密码等),很容易被传输路径上的第三者(如代理服务器等)截获而泄露,所以就有了HTTPS,用以加密传输。

启用HTTPS需要在服务器端做一些设置,包括购买/获得一个SSL证书(certificate)——它是服务器的身份证,有了它才能进行加密传输。

关于SSL证书需要注意的是:

  • 证书由一个权威机构(Certificate Authority,简称CA)提供,并有一定时效(一般以年为单位),过期失效
  • 证书提供一对密钥:公钥和私钥。服务器对外发布公钥以声明自己的身份,但私钥只有自己能读取,用来证实自己的身份(后祥)

浏览器在访问一个HTTPS站点时,首先通过一个“握手”(handshake)过程得到一个密钥(并非前述的公钥/私钥),然后通过这个密钥加密此后的HTTP传输。握手的过程如下(中间如有任何一步失败则握手失败):

  1. 浏览器访问一个HTTPS站点,如https://githuber.cn/
  2. 服务器返回一个证书,包含服务器的公钥
  3. 浏览器通过CA验证证书的有效性
  4. 浏览器生成一个随机的字符串做密钥,并用服务器的公钥加密它,然后把它发送给服务器
  5. 服务器用私钥解密浏览器发来的加密密钥
  6. 此后的通信开始使用这个密钥进行加/解密

另外:

  • 用公钥加密的密文只有用私钥才能解开,这属于一种“非对称加密”方法
  • 以上第6步中的密钥是一种“对称”密钥:使用同一把密钥进行加密和解密

更多关于HTTPS可参考:https://en.wikipedia.org/wiki/HTTPS

results matching ""

    No results matching ""