HTTPS是基于HTTP+TLS 的非对称加密与对称加密相结合的方式加密传输超文本协议。 使用非对称加解密获得对称秘钥,然后使用对称秘钥对称加密传输数据。
服务器:使用openssl/tls 采用非对称加密生成公钥 A1、私钥 A2
客户端:使用openssl/tls 采用对称加密生成秘钥X
1、客户端向网站服务器请求,服务器把公钥 A1 明文给传输客户端。
2、客户端随机生成一个用于对称加密的密钥 X,用公钥 A1 加密后传给服务器。
3、服务器拿到后用私钥 A2 解密得到密钥 X。
4、这样双方就都拥有密钥 X 了,且别人无法知道它。之后双方所有数据都用密钥 X 加密解密。
鉴权机构颁发数字证书与数字签名(即有认证的公钥)
服务器向 CA 机构提交申请,需要提交站点的信息如域名、公司名称、公钥、有效期等,CA 审批无误之后就可以给服务器颁发证书与签名。
颁发步骤:
1、CA 拥有非对称加密的私钥和公钥。
2、CA 对证书明文信息进行 hash。
3、对 hash 后的值用私钥加密,得到数字签名的证书。
鉴定步骤:
- 客户端默认安装了CA的公钥,使用公钥解密获得证书明文信息。
- 客户端下载得到数字证书,使用hash 算法获得证书明文信息。
- 对比证书签名,签名没有问题表示正常,异常代表被篡改。
案例:如何防止中间人攻击
- 通过数字证书辨别 公钥的真假,如果发现异常,拒绝访问。
- 如果是C/S架构(app) 可以内置证书,拒绝下载其它证书。
- 数据二次加密,即使数据别劫持,数据还是密文。