HTTPS:HTTP通过和SSL(安全套接层)或TLS(安全传输层协议)的组合使用,加密HTTP的通信内容。
与SSL组合使用的HTTP被称为HTTPS
SSL提供加密处理,还是用了一种被称为证书的手段,用户确定通信方。
证书由值得信耐的第三方机构颁发,用来证明服务器和客户端是实际存在的。所以只要确认通信方持有的证书,即可判断通信方真实意图。
HTTP协议无法验证通信报文的完整性,请求和响应的内容被篡改也不知道。像这种在请求或者响应的传输途中被拦截篡改称为中间人攻击。仅靠HTTP现有机制是很难验证文件的完整和正确性的。
我们把添加了加密和认证的HTTP称为HTTPS。
原来是HTTP直接和TCP通信,现在是HTTP和SSL通信,SSL和TCP通信。
应用层的其他协议也可以和SSL一起使用,SSL是运用最广泛的网络安全技术。
加密和解密用同一个密钥的方式叫对称密钥加密|共享密钥加密。这需要交换密钥,在交换密钥的过程中如果被拦截,那么加密的信息也可以被拦截者解密。
后来发明的公开密钥加密解决了对称密钥加密的问题,公开密钥加密有两把钥匙,一个是公钥一个是私钥。私有密钥不能让其他人知道,公有密钥随意发布。
公开密钥加密方式是使用对方的公钥进行加密,然后自己用自己的私钥进行解密,用这个方式不需要发送解密的私钥,也不用担心私钥被拦截。
HTTPS采用混合加密机制。在交换密钥的时候使用公开密钥加密方式,在建立安全连接过后,通信使用对称密钥加密方式。公开密钥加密很复杂,所以在通信的时候如果用公开密钥加密就很慢。
在公开密钥加密的过程中,如何得知自己获取的公开密钥是正确的,这也是一个问题。所以有了后面的CA证书。我们可以使用由数字证书认证机构(CA)和其他相关机关颁发的公开密钥证书。
- 首先后台运营人员向数字机构发出申请公钥
- 数字机构验证申请身份过后,会对公钥进行数字签名
- 分配这个已经签名的公钥,放入公钥证书后绑定在一起
- 服务器将数字证书认证机构颁发的公钥证书发送给客户端,进行公开密钥加密方式通信。
- 接收到证书的客户端使用数字证书认证机构的公开密钥,对那张证书上的数字签名进行验证,如果验证成功,则可以使用。
因为认证机关的公开密钥密续安全的传给客户端,为了安全起见,多数浏览器开发商发布版本时,会在内部置入常用认证机关的公开密钥。
可以用来确认对方运营的企业是否真实存在的证书是EV SSL证书。
HTTPS还可以使用客户端证书,服务器用来验证客户端是否是自己想要通信的客户端,但是客户端证书需要付费并且需要自行安装,成本好高,所以只有在能支持付费的业务才使用这个。比如早期的网上银行就采用了客户端证书。
- HTTPS通信步骤: