SSL
基本
- SSL是一个不依赖于平台和运用程序的协议,用于保障TCP-based运用安全,SSL在TCP和运用层之间,就像应用称道TCP连接的一个插口
Https
基本
- HTTP over SSL
- 默认443,http是80
加密
- 对称加密:客户端服务端拥有相同的密钥,缺点是服务端不能存储多个客户端的密钥,若用同一个则容易被破解
- 非对称加密:私钥只有服务器有,公钥每个客户端都可以有。缺点:服务器无法向客户端发送安全的数据,因为公钥每个客户端都有
对称加非对称
- 客户端向服务端索要公钥
- 服务端向客户端发送公钥
- 客户端将密钥作为数据,用公钥加锁发送给服务端
- 服务端用私钥解锁的到密钥,回复ok
- 以后双方用该密钥(临时的)完成对称加密
- 缺点:中间人问题
- 黑客拦截客户端请求,然后发送自己的公钥给客户端
- 再将客户端请求用自己身份发给服务端
- 客户端误以为黑客是服务端,将密钥用黑客的公钥加密发送
- 黑客用自己私钥解开获得密钥,再发送给服务端
CA
- 为了解决上述中间人问题,出现了CA机构,颁发数字证书
- CA给付费了的服务器颁发一个CA私钥(csk)
- 服务器将自己的公钥(pk)用csk加密,变成一份许可证(license)
- 客户端存有各种CA的公钥(cpk),用对应公钥可解密获得pk
- 此时黑客由于没有csk,无法模仿正确的license
- 再通过pk加密,发给服务器,服务器用私钥(ck)解开得到密钥
数字签名
- CA机构的数字证书里面包含数字签名和服务器公钥
- 数字签名是一个hash值
- 浏览器取出证书的时候将里面的信息做hash运算,判断结果是否跟数字签名相同