HTTPS原理教程
链接:https://www.nowcoder.com/questionTerminal/c3f31d177240492bbb3e78b8c114fba7
来源:牛客网
来源:牛客网
HTTPS数据加解密过程中数据进行对称加密,对称加密所要使用的密钥通过非对称加密传输。HTTPS协议加密的过程可以分为两个阶段,分别是:
- 证书的认证阶段:使用非对称加解密算法对数据传送阶段的对称加解密密钥进行加密和解密。
- 数据传送阶段:通过证书认证阶段获取到目标服务器的对称加解密密钥,对数据进行加密传送给服务器。
加分回答
HTTPS为了兼顾安全与效率,同时使用了对称加密和非对称加密。数据是被对称加密传输的,对称加密过程需要客户端的一个密钥,为了确保能把该密钥安全传输到服务器端,采用非对称加密对该密钥进行加密传输。总的来说,对数据进行对称加密,对称加密所要使用的密钥通过非对称加密传输。
在整个HTTPS数据传输的过程中一共会涉及到四个密钥:
- CA机构的公钥,用来验证数字证书是否可信任
- 服务器端的公钥
- 服务器端的私钥
- 客户端生成的随机密钥
一个HTTPS请求可以分为两个阶段,证书认证阶段和数据传送阶段。又可以细分为六个步骤:
- 客户端第一次向服务器发起HTTPS请求,连接到服务器的443(默认)端口。
- 服务器端有一个密钥对,公钥和私钥。用来进行非对称加密使用,服务器端保存私钥,不能泄露,公钥可以发送给任何人。服务器将自己的数字证书(包含公钥)发送给客户端。
- 客户端收到服务器端的数字证书之后,会对数字证书进行检查,验证合法性。如果发现数字证书有问题,那么HTTPS传输就中断。如果数字证书合格,那么客户端生成一个随机值,这个随机值是数据传输阶段时给数据对称加密的密钥,然后用数字证书中的公钥加密这个随机值密钥,这样就生成了加密数据使用的密钥的密文。到这时,HTTPS中的第一次HTTP请求就结束了。
- 客户端第二次向服务器发起HTTP请求,将对称加密密钥的密文发送给服务器。
- 服务器接收到客户端发来的密文之后,通过使用非对称加密中的私钥解密密文,得到数据传送阶段使用的对称加密密钥。然后对需要返回给客户端的数据通过这个对称加密密钥加密,生成数据密文,最后将这个密文发送给客户端。
- 客户端收到服务器端发送过来的密文,通过本地密钥对密文进行解密,得到数据明文。到这时,HTTPS中的第二次HTTP请求结束,整个HTTPS传输完成。
漫思