写的很明白的一篇博客:
http://www.techug.com/post/ensure-safety.html
非对称加密:
非对称加密需要两个密钥:公开密钥和私有密钥。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。
摘要算法:
明文通过hash算法获得固定长度的摘要,大小为128字节,也称数字指纹。
数字签名:
在发送端:对摘要通过私钥进行加密产生密文,通原文一起发送给接收者,接收者通过公钥+密文(摘要通过私钥加密的密文)获得摘要,通过hash算法+原文获得摘要,对比两个摘要,相同则说明信息是完整的没有被别人修改过,反之则是被修改了。
证书的目的:
保证公钥是不是被伪造的。
证书的签发过程(服务端获取证书的过程):
服务器的管理者将公钥发送给证书的签发机构,签发机构对申请者的身份信息进行验证,证书机构通过自己的私钥对服务器的公钥做数字签名。然后返回给服务器一个证书,证书包括:服务端的公钥,证书颁发机构的名称,证书颁发机构对证书本身的数字签名,证书签名用到的Hash算法。
https握手过程:
第一次握手:客户端向服务器发请求
1.支持的协议版本,比如TLS 1.0版,2.一个客户端生成的随机数(第一个随机数),稍后用于生成”对话密钥”,3.支持的加密方法,比如RSA公钥加密,4.支持的压缩方法
第二次握手:服务端给客户端响应
1.服务端选定的协议版本,2.加密的算法,3.第二个随机数,4.服务端的证书
第三次握手:客户端向服务器发请求
1.验证证书(验证过程:用浏览器内置的根证书中的根公钥对服务端传来的证书中的数字签名进行解密得到证书的摘要,然后通过证书指定的hash算法得到摘要,对比两个摘要以确保证书的完整性)。
2.生成第三个随机数(通过服务端所提供的公钥进行加密)
3.通过ChangeCipherSpec告诉服务端已经切换到加密状态
4.对前面所发的消息进行hash,传递hash值
5.用新密钥加密一段消息(新密钥就是三个随机数)
第四次握手:服务端给客户端响应
1.用服务端的私钥对第三个随机数进行解密
2.验证数据(通过hash)
3.通过ChangeCipherSpec告诉客户端已经切换到加密状态
4.用新密钥加密一段消息给客户端,试试好不好使
所以:
https在握手阶段是非对称加密,此时通过握手产生新的密钥,握手结束后采用对称加密。
EV SSL
用于标示网站是否确实存在,防止钓鱼网站,在浏览器中显示该网站的信息。
客户端证书:
当服务端需要进行验证客户端证书时采用客户端证书。例如网银在输入密码时。验证原理与客户端对服务端的验证类似。
感觉脑子不够用,一下午就整了这点玩意。。。。。还是王者荣耀好玩。。。。。