你未必出类拔萃,但一定与众不同
确保安全的HTTPS
目录
经常使用HTTPS来代替HTTP进行项目的访问
就像微信小程序默认使用HTTPS,APP也是如此,还有像很多网站的URL都是HTTPS项目的最终上线完全离不开HTTPS 今日就来了解一下HTTPS
1.HTTP + 通信加密 + 证书 + 完整性保护
-
在HTTP协议通信的过程中使用未经加密的明文,如果这条通信线路遭到窃听,那么信息就暴露了
-
另外对于HTTP来说,服务器和客户端都无法确认通信双方
为了解决这些问题,需要在HTTP上再加入加密处理和认证等机制,我们把添加了加密,认证机制的HTTP称为HTTPS
2.HTTPS 是身穿SSL外壳的HTTP
-
HTTPS并不是一种新协议,只是HTTP通信接口部分用SSL和TLS协议代替而已
-
通常HTTP协议直接和TCP通信,而使用SSL以后,则变成先和SSL通信,再用SSL和TCP通信
-
SSL是独立于HTTP的协议,他还可以配合SMTP和Telet等协议配合使用,是目前较为广泛的网络安全技术
3.相互交换秘钥的公开秘钥加密技术
SSL采用公开秘钥加密的加密处理方式。
共享秘钥加密(对称秘钥加密)
加密和解密同用一个秘钥的方式称为共享秘钥加密,也被叫做对称秘钥加密
- 共享秘钥加密的方式必须把秘钥发送给对方,而这样就加大了秘钥被透露的风险,不够安全。
公开秘钥加密
公开秘钥加密采用一对非对称的秘钥,一把叫做私有秘钥,一把叫做公开秘钥。
- 使用公开秘钥加密方式,发送密文的一方使用对方的公开秘钥进行加密处理,对方接受到被加密的信息候,再使用自己的私有秘钥进行解密,这种方式不需要发送解密的私有秘钥,比较安全。
混合加密机制
-
HTTPS采用共享秘钥加密和公开秘钥加密两者混合并用的混合加密机制,
-
在交换秘钥环节使用公开秘钥加密方式,之后建立的通信交换报文阶段则使用共享秘钥加密方式
证书
公开秘钥加密方式终究存在一些问题,无法确认公开的秘钥本身就是货真价实的公开秘钥
因此为解决这个问题,就使用数字证书认证机构和其相关机关颁发的公开秘钥证书
就像我们本机安装的这些证书
以及在服务器上安装的SSL证书都是其中的一种
4.数字证书认证机构的业务流程
- 服务器的运营人员向数字证书认证机构提出公开秘钥的申请,数字证书认证机构在判明提出申请者的身份之后,对已经申请的公开秘钥做数字签名,然后分配这个已签名的公开秘钥,并将该公开秘钥放入公钥证书后绑定在一起
- 服务器将这份数字证书机构颁发的公钥证书发送给客户端,以进行公开秘钥加密方式通信。公钥证书也就是我们所说的证书
- 接到证书的客户端就使用数字证书认证机构的公开秘钥,对证书上的签名进行认证,验证通过,客户端便明确两个点
- 认证服务器的公开秘钥的真实性
- 服务器的公开秘钥的信任度
5.HTTPS的安全通信机制
- 客户端发送Client Hello报文开始SSL通信,报文中包含客户端支持的SSL的指定版本,加密组件列表
- 服务器进行SSL通信时,会以Server Hello报文作为应答,和客户端一样,在报文中包含SSL版本以及加密组件,服务器的加密组件内容是从接收到的客户端加密组件内容筛选出来
- 之后服务器发送Certificate报文,报文中包含公开秘钥证书
- 最后服务器发送Server Hello Done报文通知客户端,SSL握手协商结束
- SSL第一次握手结束以后,客户端以Client Key Exchange报文作为回应,报文中包含通信加密中使用的一种Pre-master secre随机密码串,该报文已经使用公开秘钥加密
- 接着客户端继续发送Change Cipher Spec报文,该报文提示服务器此后通信使用Pre-master secret秘钥加密
- 客户端发送Finished报文,该报文包含连接至今全部报文的整体校验值,这次握手能够成功取决于服务器能够正确解密该报文
- 服务器同样发送Change Cipher Spec报文
- 服务器同样发送Finished报文
- 服务器和客户端的Finished报文交换完毕之后,SSL连接就算建立完成,通信会受到SSL的保护
- 应用层协议通信,发送HTTP响应
- 最后客户端断开连接
6.为什么所有的通信不都采用HTTPS
- 加密通信会消耗更多的CPU以及内存资源
- 通信速度较慢,网络负载可能会慢2-100倍,除去和TCP连接发送HTTP请求响应之外,还需要和SSL通信。
- 某些非敏感信息是由HTTP通信更快更佳