HTTPS是计算机进行安全通信的传输协议,实际利用HTTP进行通信,但是用SSL/TLS来加密数据包。HTTPS使用证书+数字签名的方法来解决安全问题。步骤如下:
- 服务端申请SSL证书。申请SSL证书过程是: 首先, 服务端生成自己的公钥和私钥, 服务器将自己的
地址+公钥
发送给证书颁发机构(以下简称CA). 每个CA都有自己机构的公钥和私钥. CA根据服务器的地址+CA公钥+服务器公钥
, 使用一种公开的算法, 计算出证书签名(算法公开, 服务器公钥公开, CA公钥也公开, 因此每一个拿到签名的终端都可以验证是否被篡改). 此时, CA使用自己的私钥
, 对服务器的公钥
和刚生成的签名
进行加密, 连同服务器地址+证书机构信息, 一起发送给服务端, 即SSL证书(也就是说, SSL证书包括4部分信息:服务器地址
,证书颁发机构
,经过CA私钥加密的服务器公钥
,经过CA私钥加密的签名
). - 客户端与服务端建立连接时,服务端会向客户端发送SSL证书
- 客户端查找内置的受信任的证书颁发机构CA,与服务器发来的证书的颁发者CA比对,校验证书是否为合法机构颁发
- 如果找到,客户端取出颁发者CA的公钥,对服务器发来的证书进行解密, 此时客户端就具有了5个信息:
服务器地址
,CA公钥
,服务器公钥
,证书签名
,签名生成算法
. - 客户端用相同的hash算法,计算出一个值,将这个值与数字签名做比对
- 比对结果一致,证明服务器证书合法, 内容没有被篡改
- 浏览器生产随机的对称密钥,用服务端给的公钥进行加密,发送给服务端
- 服务端用自己的私钥解密,得到同样的对称密钥
- 双方都知道对称密钥,用它来对后续的通信内容加密。
网友评论