https流程
- 建立TCP连接。
- 发送client hello报文建立SSL连接(443端口),报文里面包含客户端所支持的SSL版本,加密算法。
- 服务端收到client hello报文后会将所使用的SSL版本,加密算法和服务端公钥发给权威机构生成CA证书并将证书发送给客户端。
- 客户端通过证书公钥来递归的向上认证证书是否有效,如果是可信的。采用RSA等算法生成随机密码串用于之后的对称加密,并用公钥进行加密。
- 服务端用私钥进行解密得到随机密码串。之后就采用该随机密码串对信息进行对称加密。
https怎么保证安全可靠传输
- 利用非对称加密实现身份认证和对称秘钥协商
- 利用对称加密采用协商的秘钥对数据进行加密。
- 利用散列函数验证数据的完整性。
对称秘钥
加密和解密都是用同一个秘钥。公钥可能会被其他用户获取导致不安全。
非对称秘钥
加密和解密采用两个秘钥。通常公钥保存在客户端,私钥保存在服务端,私钥不会进行传输。
解决报文被篡改问题:数字签名
数字签名可以用来保证数据的完整性,可以证明数据来自谁并且证明数据是否被修改过。
数字签名是用私钥加密过的校验和来判断数据报文是否完整,一般来说攻击者在没有私钥的基础上很难对校验和进行修改。
采用证书来认证服务器
专业的CA机构有自己的私钥和公钥,公钥在浏览器或者操作系统中都有保存,可以采用公钥来验证证书的可靠性。