https相关问题

很多学习前端的朋友在面试的时候总会怕被问到关于https的相关问题,因为很多人对这一方面的知识是比较陌生的,看了这篇文章,可以帮助回答前端面试中遇到的关于https的以下几个问题:

  1. 何为对称加密,非对称加密,单项散射,数字签名,CA证书
  2. SSL/TLS的流程(https原理)

1.基本概念

  • 对称加密*
    一个密钥加密和解密,速度快。常见的对称加密有 DES AES
  • 非对称加密
    有公钥和私钥。速度慢。公钥公开,私钥自己保存。私钥加密公钥解密;公钥加密私钥解密。
    常见的非对称加密有RSA。
  • 单向散射(hash)
    把一堆数据压缩成固定长度,不可恢复,用于检测完整性
    MD5(以不安全)
    SHA1 SHA256
  • 数字签名
    1.对文件的内容进行单向散列(hash)
    2.用自己的私钥对单向散列值加密
  • CA证书
    服务器把自己的域名,IP地址,公钥等一些列信息发送给CA,CA经验证信息属实后,会先把该信息进行hash,然后再把hash得到的值用自己的私钥加密得到CA的数字签名。最后,会把改服务其的相关信息和CA对该服务器的数字签名放在一起,生成该服务器的CA证书。

2.SSL/TLS的流程(https原理)

SSL是(Secure Socket Layer)安全套接层
TLS是(Transport Layer Security)安全传输协议

  1. 浏览器将自己支持的一系列加密算法会话ID发送给服务器,并发送一个浏览器随机数
  2. 服务器向浏览器发送选择的加密算法会话ID、服务器生成的随机数(服务器随机数)、CA证书
  3. 服务器拿到CA证书后,对证书的CA签名进行验证(在本地找到CA的公钥对数字签名解密,得到一个hash值;把信息进行单向散列得到另一个hash值,比较两个hash值是否一致),如果验证通过,会从证书中拿到服务器的公钥
  4. 浏览器对浏览器随机数服务器随机数进行处理,生成预备住密码。
  5. 浏览器用服务器的公钥预备主密码进行加密,然后发送给服务器。
  6. 服务器用自己的私钥解密得到预备主密码
  7. 浏览器和服务器分别用预备主密码随机数,生成共享主密钥
  8. 二者使用共享主密钥,使用对称加密算法加密数据。


    tips:
  • HTTP + 加密 + 认证 + 完整性保护 = HTTPS
  • HTTPS是套这SSL外壳的HTTP
  • 第一次协商主密钥后,后面的请求就使用主密钥进行对称加密通信,不需要再协商。通过会话id来识别
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。