HTTP+ 加密 + 认证 + 完整性保护 =HTTPS
HTTPS 并非是应用层的一种新协议。只是 HTTP 通信接口部分用 SSL(Secure SocketLayer)和 TLS(Transport Layer Security)协议代替而已。
HTTP 主要有这些不足,例举如下
- 通信使用明文(不加密),内容可能会被窃听
- 不验证通信方的身份,因此有可能遭遇伪装
- 无法证明报文的完整性,所以有可能已遭篡改
TCP/IP是可以被窃听的网络,按 TCP/IP 协议族的工作机制,通信内容在所有的通信线路上都有可能遭到窥视,所以要通过加密来防止窃听。
- 通信的加密:通过和SSL或TSL的组合使用,加密HTTP的通信内容,与SSL组合使用的HTTP称为HTTPS。
- 内容加密:对报文主体加密后发送,客户端服务器必须同时具有加密解密过程。
至于通信双方的身份信息,在SSL中存在一个被称为证书的手段,只要确认对方的证书,伪装身份的危险大大减小。
公开密钥加密使用一对非对称的密钥。一把叫做私有密钥,另一把叫做公开密钥。
使用公开密钥加密方式,发送密文的一方使用对方的公开密钥进行加密处理,对方收到被加密的信息后,再使用自己的私有密钥进行解密。所以两个钥匙都是对方的,不存在发送密钥过去然后可能被窃取被篡改的问题。
但是防过了发送密钥的危险,怎么确认拿到的公开密钥是货真价实的公开密钥,可以使用由数字证书认证机构和其相关机关颁发的公开密钥证书。
数字证书认证机构处于客户端与服务器双方都可信赖的第三方机构的立场上。
至此服务器客户端间的通信过程:
- 服务器把自己的公开密钥登录至数字证书认证机构。
- 认证机构用自己的私有密钥向服务器的公开密钥署数字签名并颁发公钥证书。
- 客户端拿到服务器的公开密钥证书,使用认证机构的公开密钥,向认证机构验证公钥证书的数字签名,以确认服务器公开密钥的真实性。
- 拿到后,就是客户端使用服务器的公开密钥对报文加密发送,服务器自己用自己的私有密钥解密。
关于SSL证书
证书的一个作用是用来证明作为通信一方的服务器是否规范,另外一个作用是可确认对方服务器背后运营的企业是否真实存在。拥有该特性的证书就是 EV SSL 证书是基于国际标准的认证指导方针颁发的证书。其严格规定了对运营组织是否真实的确认方针,因此,通过认证的 Web 网站能够获得更高的认可度。
持有 EV SSL 证书的 Web 网站的浏览器地址栏处的背景色是绿色的,从视觉上就能一眼辨别出。而且在地址栏的左侧显示了 SSL 证书中记录的组织名称以及颁发证书的认证机构的名称。
实际通信中如何选择:
虽然HTTPS安全,但是加密通信会消耗更多的 CPU 及内存资源。如果每次通信都加密,会消耗相当多的资源,而且购买安全证书的开销也比较大,一般HTTPS比HTTP要慢2到100倍,所以一般对于非敏感信息,还是采用HTTP通信。