HTTPS简述

现在上架苹果应用和微信小程序都需要服务端支持HTTPS。现在所有用户和开发商对于安全的问题也越来越重视了。HTTPS究竟是个啥。

1. 概念

HTTPS 就是在HTTP 的基础下加入SSL 层。通过SSL层可以对请求进行身份认证和数据加密,可以有效地阻止数据泄露和篡改。

2. 申请证书

可以向CA机构提交相关资料,为所拥有的域名申请证书。现在比较著名的CA机构:Comodo、Symantec、GeoTrust、DigiCert、Thawte、GlobalSign、RapidSSL等,其中Symantec、GeoTrust都是DigiCert机构的子公司。
百度、阿里用的就是GlobalSign,知乎、12306用的DigiCert。
证书有收费的也有免费的,腾讯云、阿里云都可以申请证书。区别看另外一篇文章。
CA机构会颁发证书和对应的私钥。

3. 服务器配置证书

Nginx增加配置项

    listen        443;    
    # HTTPS默认端口是443
    ssl on;
    ssl_certificate /usr/local/nginx/conf/vhost/ssl/domian.pem;
    # CA颁发的证书所在路径
    ssl_certificate_key /usr/local/nginx/conf/vhost/ssl/domain.key;
    # 私钥

4. HTTPS请求过程

  1. 浏览器向服务器发起请求
  2. 服务器返回证书(包含公钥)
  3. 浏览器读取证书中的证书所有者、有效期等信息进行校验
  4. 浏览器根据验证链查找根证书以及是否受信任,上面那些著名的CA机构根证书都内置在操作系统中。
  5. 判断证书是否已吊销。通过CRL(Certificate Revocation List 证书注销列表)和 OCSP(Online Certificate Status Protocol 在线证书状态协议)实现
  6. 浏览器根据系统中受信任的CA机构的公钥对证书进行验签。
  7. 浏览器从证书中拿到网站公钥
  8. 浏览器生成一段随机内容作为本次会话密钥,用公钥加密后发送给服务器
  9. 服务器用私钥解密后,双方以该随机内容作为密钥进行对称加密通信。

5. HTTPS的注意点

  1. HTTPS对于证书的验证和随机密钥的传输采用的是非对称加密,而交互内容采用的是对称加密。非对称加解密的效率太低。
  2. 不一定非要向CA机构申请证书,可以自己生成证书,让用户安装并信任,操作麻烦并且增加了风险。最大的电商网站12306之前就是让用户安装它的根证书现在也改用DigiCert了。

6. HTTPS为啥安全?解决了什么问题?

这个有点复杂,单独成文。

发表评论

电子邮件地址不会被公开。 必填项已用*标注