ssl加密
为什么需要ssl加密?
非对称加密的缺点:
1.不够安全
通信的一次过程
客户端:我需要访问服务端,请给我公钥
服务端:公钥是XXXXXX
客户端:使用公钥进行加密 发送消息。。。
服务端:私钥解密消息
但是,如果服务端是第三方(恶意网站),伪装成其他服务端
客户端:我需要访问服务端(恶意网站),请给我公钥
恶意网站:将自己的公钥发送
客户端:使用恶意网站公钥进行加密 发送消息。。。
恶意网站:自己的私钥解密消息
这样用户的信息就被恶意网站获取了。
2.非对称加密解密速度相对较慢
由于非对称加密复杂的加密方式,解密需要时间相对较长,而网路中信息传输及时性特别重要
SSL
SSL通过CA机构提供的数字证书来保证,服务端身份的可靠性
SSL的主要思想是,提供给客户端一个验证服务端,身份正确的方式。
通信双方通过对称加密来加密密文,然后使用非对称加密的方式来传递对称加密所使用的密钥。这样效率和安全就都能保证了
SSL的过程
1.客户端向服务端发起请求 支持的加密方式+一个随机数+一个加密方式
2.服务端接收到这些信息后,将自己的 确定的加密方式+安全证书+一个随机数发给客户端
3.客户端确认数字证书有效性,然后生成一个随机数,并将这个随机数用服务端的数字证书公钥加密后发送给A。
4.服务端使用自己的私钥解密这个随机数(非对称加密传输密钥)
5.客户端和服务端通过之前确定的加密方式将前三个随机数生成一个对话密钥 用来接下来的通信(对称加密)
关于如何验证CA证书的合法性?
1.数字签名的产生算法:
首先,使用散列函数计算公开的明文信息的信息摘要,然后,采用 CA 的私钥(CA机构自己的私钥)对信息摘要进行加密,密文即签名;(这个过程是不可逆的,所以保证了申请者证书的机构无法对证书进行修改)
2.验证过程
2.1.客户端向网站发起申请时,会先收到一个证书,证书中包含了申请者公钥、申请者的组织信息和个人信息、签发机构 CA 的信息、有效时间、证书序列号等信息的明文,同时包含一个数字签名;
2.2.客户端 读取证书中的相关的明文信息,采用相同的散列函数计算得到信息摘要,然后,利用对应 CA 的公钥解密签名数据,对比证书的信息摘要,如果一致,则可以确认证书的合法性,即公钥合法;
2.3.客户端然后验证证书相关的域名信息、有效时间等信息;
2.4.客户端验证证书是否是上级CA签发的
每一张证书都是由上级CA证书签发的