【Java面试题】HTTPS的加密流程

1. 客户端发起 HTTPS 请求

客户端在浏览器输入一个HTTPS 网址,并连接服务器的 443 端口。

2. 服务器发送证书给客户端

由于服务器事先会向 ca 申请证书,当收到客户端的 HTTPS 请求后,服务器会将申请到的证书发给客户端。 证书包含的内容有:证书颁发机构的信息,服务器网址的信息,被加密过的服务器公钥,还有经过机构私钥签名之后的数字签名。

3. 客户端解析证书

客户端收到数字证书之后,会验证证书的合法性,如果证书验证通过, 就会生成一个随机的对称密钥,用证书的公钥加密。

4. 客户端发送密钥信息给服务器

客户端将公钥加密后的密钥发送给服务器。

5. 服务器解析得到密钥信息

服务器接收到客户端发来的密文密钥之后,用自己之前保留的私钥对其进行非对称解密 ,解密之后就得到客户端的密钥,然后用客户端密钥对返回数据进行对称加密,这样传输的数据都是密文。

6. 服务器发送加密信息

服务器将加密的密文返回给客户端。

7.客户端解析加密信息

客户端收到后,用自己的密钥对其进行对称解密,得到服务器返回的数据。

相关推荐
YC运维24 分钟前
Ansible模块
java·服务器·前端
包达叔1 小时前
docker国内镜像源
运维·docker·容器
未来可期LJ1 小时前
【Linux 小实战】自定义 Shell 的编写
linux·服务器
wanhengidc2 小时前
云手机的未来发展怎么样?
运维·安全·游戏·智能手机
_君落羽_2 小时前
Linux操作系统——TCP服务端并发模型
linux·服务器·c++
Rverdoser12 小时前
网站开发用什么语言好
服务器
luck_lin13 小时前
linux添加新硬盘挂载分区和数据迁移
linux·运维·分区扩容
四时久成13 小时前
服务器认证系统
运维·服务器
徐子元竟然被占了!!13 小时前
Windows Server 2019 DateCenter搭建 FTP 服务器
运维·服务器·windows
-L713 小时前
进入docker中mysql容器的方法
运维·mysql·docker·容器