当前位置 : 主页 > 编程语言 > java >

HTTPS 的加密流程

来源:互联网 收集:自由互联 发布时间:2023-09-14
在网络上如果进行明文传输数据,是非常危险的操作,只有加密操作才能保证安全 加密方式大致分为两类 对称加密: 对称加密就是通过同一个密钥,把明文加密为密文 ,并且也能将密

在网络上如果进行明文传输数据,是非常危险的操作,只有加密操作才能保证安全

加密方式大致分为两类 

对称加密:

对称加密就是通过同一个密钥,把明文加密为密文 ,并且也能将密文解密成明文

HTTPS 的加密流程_服务器

但是由于客户端生成密钥,需要发送给服务器,此时密钥只能明文传输,密钥可能被黑客截取

HTTPS 的加密流程_客户端_02

为了使密钥更安全的传输,引入非对称加密

非对称加密:

生成一对密钥:公钥 ,私钥

明文通过公钥加密成密文,密文通过私钥解密成明文(使用公钥加密,使用私钥解密)

HTTPS 的加密流程_对称加密_03

将对称加密和非对称加密相结合,尽可能加快整体的速度

这样就绝对安全了吗?

HTTPS 的加密流程_服务器_04

此时服务器就可以使用pri1 来解密接收到的数据,得到对称密钥key 

服务器以为这个对称密钥是从客户端来的,后续的交互操作都是用这个对称密钥进行加密了

为了解决这个问题引入证书

证书:

可以理解位一个结构化的字符串:

1)证书的发布机构

2)证书的有效期

3)公钥

4)证书所有者

5)签名 ......

就相当于我们的身份证,在搭建https网站是就需要在CA机构申请一个证书

当客户端与服务器建立连接时候,服务器不单单返回一个公钥,而是将证书一起发送给服务器

此时客户端拿到这个证书就会对其进行效验

1)判断证书是否过期

2)判断证书的颁发机构是否受信任

3)验证证书是否被修改

(从系统中拿到该证书发布机构的公钥, 对签名解密, 得到一个 hash 值(数据摘要), 设为 hash1. 然后计算整个证书的 hash 值, 设为 hash2. 对比 hash1 和 hash2 是否相等.如果相等, 则说明证书是没有被篡改过的 )

小结:

https 加密

1)针对业务数据引入对称加密

2)使服务器生成非对称密钥,公钥和私钥,将公钥连同证书一同发送给客户端

3)客户端拿着证书进行效验(使用颁发机构提供的公钥,对证书的签名进行解密计算校验和是否匹配)

4)客户端拿着服务器发来的公钥针对对称密钥进行加密,发送给服务器.

上一篇:Maven对源文件的编译
下一篇:没有了
网友评论