HTTPS传输加密实践
HTTP与HTTPS
HTTP与HTTPS的概念
HTTP(HyperText Transfer Protocol),即超文本传输协议,是互联网上应用最为广泛的一种网络协议。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。通过HTTP或者HTTPS协议请求的资源由统一资源标识符(Uniform Resource Identifiers,URI)来标识。
HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此HTTP协议不适合传输一些敏感信息,比如信用卡号、密码等。
HTTPS(Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。
HTTP与HTTPS的区别
HTTPS和HTTP的区别主要集中在以下4点:
- HTTPS协议需要服务端先到CA申请证书。
- HTTP是明文传输,HTTPS 则是具有安全性的SSL加密传输协议。
- HTTP和HTTPS使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
- HTTP的连接很简单,是无状态的,而HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比HTTP协议更安全。
使用HTTPS保障BOS数据安全性
BOS目前已经全面支持HTTP与HTTPS的传输协议,使用HTTP和HTTPS与BOS的交互过程如下图所示。
使用HTTP
Client端使用HTTP协议进行传输时,由于HTTP属于明文传输,在传输过程中可能存在被中间方截取、篡改等恶意攻击行为,存在一定的安全隐患。
使用HTTPS
HTTPS属于加密传输,BOS已向CA申请了证书。该证书只有用于BOS服务器的时候,Client端才信任该主机。
在传输过程中,BOS会先返回给Client端该证书信息,并由Client端进行合法性认证,认证通过后,Client端与BOS会协商出一个随机的对称加密密钥,其后Client端与BOS之间的通讯请求都会被安全的对称加密算法进行加密处理。因此, 即使传输过程中被恶意的中间方截获,由于是密文,也无法进行恶意攻击,可以有效的保障 传输数据的安全性。
性能影响
由于HTTP是明文传输,HTTPS是加密传输,因此两者在响应时间QPS、吞吐量(网卡)、资源消耗三方面都存在区别,其中响应时间包括RTT ( Round Trip Time )、加密解密耗时、后端读写处理耗时等。具体影响程度会跟OpenSSL的版本、使用的加密算法、和到BOS Server端的RRT等诸多因素有关。
与HTTP相比,HTTPS需要经过SSL交互过程,因此会比HTTP过程多两个RTT的延时损耗。比如:Ping时间是40ms,HTTPS比HTTP的延时会增加80ms。
总体来看,在网络条件较好,且文件较大时,选择HTTPS几乎没有影响;当网络条件较差,文件较小时,如图片处理等场景,HTTPS的延时会放大。
配置示例
为了您的数据在传输过程中的可靠性,我们推荐您使用HTTPS协议。目前,BOS的API和SDK已经全面支持配置HTTPS。
API方式
使用API访问时,根据您使用的语言不同,将对应的端口协议配置为HTTPS即可。
SDK方式
使用SDK访问时,不同语言SDK的配置方法请参考: