Https 通信时序
- 服务器在接受到客户端发起https连接请求后, 将返回该网站的证书(根证书信息等)
- 客户端将校验网站证书的合法性。
- 验证通过后,客户端产生随机的对称密钥。
- 客户端使用网站证书的公钥加密对称密钥, 并发送给服务器端。
- 服务器端收到对称密钥后, 就可以进行利用对称密钥的密文通信了。
每一个https的网站都会向证书颁发机构(CA)申请一个网站证书, 这个证书实际是非对称加密的公钥密钥对, 利用非对称加密算法的特殊性, 可以在理论上避免第三方窃听。
非对称加密算法的原理
- 假设有A, B 两方, 双方都有一对密钥(公钥和私钥)。公钥是对外开放的, 任何人都可以得到;私钥是自己的, 别人是获取不到的。公钥和私钥是相对应的, 利用公钥进行加密, 只能用私钥解密, 使用公钥无法解密; 利用私钥解密, 则只能用公钥解密, 使用私钥也无法解密。
- 利用A的公钥对数据进行加密, 则只有A的私钥可以解密, 任何第三方都不可以解密数据。 这样可以在不安全的通道上进行数据传输, 保证只有A可以解密数据, 任何第三方只能窃听到已加密的数据, 即便拥有公钥也无法进行解密操作。
- 利用A的私钥对约定好的数据加密, 发送给B。 B可以使用公钥进行解密, 从而验证A的身份。任何第三方都无法模拟这样加密后的数据。这种形式广泛用于电子签名等。
对非对称加密算法不了解的同学, 可以参考百度百科.
Https加密通信原理
Https 加密通信利用非对称加密算法
和对称算法
, 使用非对称加密算法验证身份
和发送对称密钥
, 使用对称算法
加密通信数据。 证书实际就是非对称加密算法的公钥
和私钥
, 分为两大类, 根证书
和网站证书
。
根证书
属于证书颁发结构, 根证书的公钥默认内嵌在我们的系统中。运行命令win+r
运行certmgr.msc
可以查看在系统中的根证书列表。网站证书
带有根证书的私钥签名
, 在https握手开始阶段由网站服务器发送给客户端。 客户端收到网站证书
后, 立即校验证书的有效性。校验方法是: 取根证书的私钥签名, 利用客户端系统内嵌的根证书公钥解密。 解密成功, 则证书有效。
参考: 图解数字签名是什么? http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html from:http://www.fanxu.me/post/2013-06-04