面试题:https为什么能保证安全性

http传输如下:

此时信息是明文传输,如果信息被人截获,则能看到里面的内容,极不安全

那就需要对内容加密,过程如下:

  1. 浏览器生成一个秘钥
  2. 浏览器向服务器请求公钥
  3. 服务器向浏览器发送它的公钥
  4. 浏览器接收服务器发送的公钥,并使用公钥加密随机生成的对称密钥,发送给服务器
  5. 服务器接收浏览器发送的数据,用自身私钥,得到对称加密密钥
  6. 最后,浏览器和服务器可以使用对称密钥加密内容进行通信

但此方案仍会存在安全隐患,在第三步和第四步之间,如果被一个中间人获取到它的公钥,浏览器使用中间人的公钥加密对称密钥,发送给服务器,中间人再次截获数据,获取其中的对称密钥。浏览器和服务器在双方数据都不知情的情况下,数据内容被窥探。

浏览器如何确定公钥的合法性?

  1. 在接收数字证书时,查看证书的有效期
  2. 根据数字证书的第三方机构名称,找到对应的公钥,解密数字签字,得到hash1
  3. 根据服务端网址等信息,使用签名算法,生成hash2
  4. 如果hash1等于hash2,则公钥合法

OSI七层 物理层->数据链路层->网络层->传输层->会话层->表示层->应用层 https的ssl位于传输层和应用层之间

http传输如下: 此时信息是明文传输,如果信息被人截获,则能看到里面的内容,极不安全 那就需要对内容加密,过程如下: 浏览器生成一个秘钥 浏览器向服务器请求公钥 服务器向浏览器发送它的公钥 浏览器接收服务器发送的公钥,并使用公钥加密随机生成的对称密钥,发送给服务器 服务器接收浏览器发送的数据,用自身私钥,得到对称加密密钥 最后,浏览器和服务器可以使用对称密钥加密内容进行通信 但此方案仍会存在安全隐患,在第三步和第四步之间,如果被一个中间人获取到它的公钥,浏览器使用中间人的公钥加密对称密钥,发送给服务器,中间人再次截获数据,获取其中的对称密钥。浏览器和服务器在双方数据都不知情的情况下,数据内容被窥探。 浏览器如何确定公钥的合法性? 在接收数字证书时,查看证书的有效期 根据数字证书的第三方机构名称,找到对应的公钥,解密数字签字,得到hash1 根据服务端网址等信息,使用签名算法,生成hash2 如果hash1等于hash2,则公钥合法 OSI七层 物理层->数据链路层->网络层->传输层->会话层->表示层->应用层 https的ssl位于传输层和应用层之间
经验分享 程序员 微信小程序 职场和发展