在网络上如果进行明文传输数据,是非常危险的操作,只有加密操作才能保证安全
加密方式大致分为两类
对称加密:
对称加密就是通过同一个密钥,把明文加密为密文 ,并且也能将密文解密成明文
但是由于客户端生成密钥,需要发送给服务器,此时密钥只能明文传输,密钥可能被黑客截取
为了使密钥更安全的传输,引入非对称加密
非对称加密:
生成一对密钥:公钥 ,私钥
明文通过公钥加密成密文,密文通过私钥解密成明文(使用公钥加密,使用私钥解密)
将对称加密和非对称加密相结合,尽可能加快整体的速度
这样就绝对安全了吗?
此时服务器就可以使用pri1 来解密接收到的数据,得到对称密钥key
服务器以为这个对称密钥是从客户端来的,后续的交互操作都是用这个对称密钥进行加密了
为了解决这个问题引入证书
证书:
可以理解位一个结构化的字符串:
1)证书的发布机构
2)证书的有效期
3)公钥
4)证书所有者
5)签名 ......
就相当于我们的身份证,在搭建https网站是就需要在CA机构申请一个证书
当客户端与服务器建立连接时候,服务器不单单返回一个公钥,而是将证书一起发送给服务器
此时客户端拿到这个证书就会对其进行效验
1)判断证书是否过期
2)判断证书的颁发机构是否受信任
3)验证证书是否被修改
(从系统中拿到该证书发布机构的公钥, 对签名解密, 得到一个 hash 值(数据摘要), 设为 hash1. 然后计算整个证书的 hash 值, 设为 hash2. 对比 hash1 和 hash2 是否相等.如果相等, 则说明证书是没有被篡改过的 )
小结:
https 加密
1)针对业务数据引入对称加密
2)使服务器生成非对称密钥,公钥和私钥,将公钥连同证书一同发送给客户端
3)客户端拿着证书进行效验(使用颁发机构提供的公钥,对证书的签名进行解密计算校验和是否匹配)
4)客户端拿着服务器发来的公钥针对对称密钥进行加密,发送给服务器.