HTTP
超文本传输协议 HyperText Transfer Protocol
是一种详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。
所有的WWW文件都必须遵守这个标准。
由来
设计HTTP最初的目的是为提供一种发布和接收HTML页面的方法。1960年美国人Ted Nelson构思了一种通过计算机处理文本信息的方法,并称之为超文本(hypertext),这成为了HTTP超文本传输协议标准架构的发展根基。Ted Nelson组织协调万维网协会(World Wide Web Consortium)和互联网工程工作小组(Internet Engineering Task Force)共同合作研究,最终发布了一系列的RFC,其中著名的RFC 2616定义了HTTP 1.1。
HTTPS
安全超文本传输协议 Hypertext Transfer Protocol over Secure Socket Layer
是一个安全通信通道,基于HTTP开发,用于客户计算机和服务器之间交换信息。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。
HTTPS应用Netscape(网景公司)的安全套接字层(SSL)作为HTTP应用层的子层。SSL使用40 位关键字作为RC4流加密算法,这对商业信息的加密是合适的。HTTPS和SSL支持使用X.509数字认证,如果需要用户可以确认发送者是谁。
HTTPS优点
1. 信任主机问题
采用https 的server 必须从CA 申请一个用于证明服务器用途类型的证书。 改证书只有用于对应的server 的时候,客户端才信任此主机。
银行系统网站,关键部分都是https 的。客户通过信任该证,从而信任该主机。这样效率低,但更安全。这一点对我们没有任何意义,我们的server 采用的证书不管自己issue 还是从公众的地方issue ,客户端都是自己人,所以我们也肯定信任该server。
2. 通讯过程中的数据的泄密和被窜改
- 一般意义上的https,就是 server 有一个证书。
- 主要目的:保证server 就是他声称的server。
- 服务端和客户端之间的所有通讯,都是加密的。
- 客户端产生一个对称的密钥,通过server 的证书来交换密钥。 一般意义上的握手过程。
- 接下来所有的信息往来都是加密的。即使被截获,也没有任何意义。因为他没有密钥。同样窜改也没有任何意义。
- 少许对客户端有要求的情况下,会要求客户端也必须有一个证书
- 客户端证书,类似表示个人信息,除了用户名/密码, 还有一个CA 认证过的身份。 个人证书一般无法模拟,所以能够更准的确认自己的身份。
- 目前少数个人银行的专业版是这种做法:具体证书可能是拿U盘作为一个备份的载体。
HTTPS缺点
HTTPS 一定是繁琐的。
- http协议很简单,一个get一个response。由于https 的密钥和确认加密算法的需要。单握手就需要6/7 个往返。
- 任何应用中,过多的round trip 肯定影响性能。
- 接下来是具体的http协议,每一次响应或者请求,都要求客户端和服务端对会话的内容做加密/解密。
- 尽管对称加密/解密效率比较高,却仍然要消耗过多的CPU,为此有专门的SSL 芯片。如果CPU 性能比较低的话,肯定会降低效率,从而不能serve 更多的请求。
- 加密后数据量的影响。 所以,才会出现那么多的安全认证提示。
HTTP、HTTPS の区别
http | 名称 | https |
---|---|---|
无 | 证书 | 到CA申请证书,免费较少,多需交费 |
明文传输 | 传输 | SSL加密传输 |
80 | 端口 | 443 |
连接简单,无状态的 | 安全 | SSL+HTTP,可加密传输、身份认证 |