1) TLS 握手
握手的目的就是协商出一个对称加密使用的key,用来加密后面的业务数据。
1) client 产生一个random 值
2) server 产生一个random 值, server 将签名的证书 和 random 值 以及非对称加密使用的public key 发送给client
3) client 验证证书,再产生一个random 值,并且用public key 加密给server
4) client 和 server 拥有相同的随机值,使用相同的算法就可以生成一样的对称加密的密码
2) 证书认证
首先要知道证书是如何生成的
1) server 提取自身的一些信息(比如domain name 和公钥) 给CA 机构, CA机构 对这些信息 做签名,并对签名使用
非对称加密的private key 加密。
2) client 用CA 对 CA签名的server 证书校验。client 也对这些明文信息做签名运算得到一个签名值, 然后用CA的public key
解密 又得到一个签名值, 这两个签名值一样, 说明 server就是真实的server。
3) 为什么说 所以自签名证书不安全的
对于自签名证书, 攻击者不会去攻击server 或者client, 他会去攻击签发 证书的那台server, 只要拿到这台机器的私钥
那么攻击者就可以实现中间人劫持了。
S' 既然有了私钥, 那么他可以签发一个证书,那么client 与S‘ 就可以建立TLS 通信,
同样S' 也可以和S TLS 通信
A -------------------------------- S
A --------------S'----------------- S