(点击题目解锁惊喜↑↑)
由于HTTP本身不具备加密的功能,所以也无法做到对通信整体(使用HTTP协议通信的请求和相应的内容)进行加密,即HTTP报文使用明文(未经过加密的报文)方式发送。
TCP/IP是可能被窃听的网络。
通信时不加密是一个缺点是因为,按TCP/IP协议族的工作机制,通信内容在所有的通信线路上都有可能遭到窥视。窃听相同端上的通信只需要收集在互联网上流动的数据包(帧)。
就可以,对于收集来的数据包的解析工作,可以交给抓包或嗅探器工具。
加密处理可以防止被窃听。
加密的对象可以有:
1)通信加密
HTTP协议中没有加密机制,但可以通过SSL(Secure Socket Layer,,安全套接层)或TLS(Transport Layer Security,安全层传输协议)的组合使用,加密HTTP的通信内容。
与SSL组合使用的HTTP被称为HTTPS(HTTP Secure,超文本传输安全协议)。
2)内容的加密
由于HTTP协议中没有加密机制,那么就对HTTP协议传输的内容本身加密,即把HTTP报文里所含的内容进行加密处理。客户端需要对HTTP报文进行加密处理后再发送请求。
HTTP协议的实现本身非常简单,不论是谁发送过来的请求都会返回响应,因此不确认通信方,会存在以下各种隐患。
查明对方的证书:
可以使用SSL确定通信方,SSL不仅提供加密处理,而且还是用了一种被称为证书的手段,可用于确定方。证书由值得信赖的第三方机构颁发,另外,伪造证书从技术角度来说是异常困难的一件事,所以,只要能够确认通信方持有的证书,即可判断通信方的真实意图。
所谓完整性是指信息的准确度,也就意味着无法判断信息是否准确。
接收到的内容可能有误:
由于HTTP协议无法证明通信的报文完整性,因此,在请求或响应送出之后直到对方接受之前的这段时间内,即使请求或响应的内容遭到篡改,也没有办法获悉。
如何防止篡改:
虽然有使用HTTP协议确定报文完整性的方法,但事实上并不便捷、可靠,其中常用的是MD5和SHA-1等散列值校验的方法,以及用来确认文件的数字签名方法。
HTTPS(安全套接字超文本传输协议),它是HTTP+加密+认证+完整性保护得来的HTTPS。
HTTPS是HTTP通信接口部分用SSL和TLS协议代替而已。通常是HTTP直接和TCP通信,当使用SSL时,则演变为先和SSL通信,再由SSL和TCP通信了。
在采用了SSL之后,HTTP就拥有了HTTPS的加密、证书和完整性保护这些功能。
SSL是独立与HTTP得协议,其他运行在应用层的SMTP和Telnet等协议均可配合SSL协议使用。
加密方法:SSL采用一种叫作公开秘钥加密的加密处理方式,近代的加密方法中加密算法是公开的,而秘钥是保密的,通过这种方式可以保持加密方法的安全性。
共享秘钥加密:加密和解密使用同一个秘钥的方式,在加密时必须要将秘钥也发给对方,在互联网转发秘钥时,如果通信被监听那么秘钥就可能会落入攻击者之手,同时也失去了加密的意义。
使用两把秘钥的公开秘钥加密:公开秘钥加密使用一堆非对称的秘钥,一把叫做私有秘钥,另一把叫做公开秘钥;发送密文的一方使用对方的公开密钥进行加密处理,对方收到被加密的信息后,再使用自己的私有秘钥进行解密,利用这种方式,不需要发送用来解密的私有秘钥,也不必担心秘钥被攻击者窃听而盗走;但是他的处理速度相对共享秘钥来说很慢。
HTTPS采用混合加密方式:利用两种加密方式的优点,组合起来进行通信;在交换秘钥环节使用公开密钥加密方式,之后的建立通信交换报文阶段则使用共享加密方式。
公开密钥加密方式无法证明秘钥本身就是货真价实的公开密钥;为了解决这个问题,可以使用由数字证书认证机构(CA)和其他相关机构颁发的公开秘钥证书。
故CA认证介入我们的HTTPS连接的过程如下:
https协议需要到CA申请证书,一般免费整数较少,因而需要一定费用。
http是超文本传输协议,信息是明文传输,HTTPS则是具有安全性的SSL/TLS加密传输协议。
http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
http的连接很简单,是无状态的;https协议是由SSL/TLS+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
服务器认证阶段:
1)客户端向服务器发送一个开始信息“Hello”以便开始一个新的会话连接。
2)服务器根据客户的信息确定是否需要生成新的主密钥,如需要则服务器在响应客户的“Hello”信息时将包含生成主密钥所需的信息。
3)客户根据收到的服务器响应信息,产生一个主密钥,并用服务器的公开密钥加密后传给服务器。
4)服务器回复该主密钥,并返回给客户一个用主密钥认证的信息,以此让客户认证服务器。
用户认证阶段:在此之前,服务器已经通过了客户认证,这一阶段主要完成对客户的认证。经认证的服务器发送一个提问给客户,客户则返回(数字)签名后的提问和其公开密钥,从而向服务器提供认证。
服务器证书(server certificates)是SSL数字证书的一种形式,意指通过提交数字证书来证明您的身份或表明您有权访问在线服务。再者简单来说,通过使用服务器证书可为不同站点提供身份鉴定并保证该站点拥有高强度加密安全。是组成Web服务器的SSL安全功能的唯一的数字标识。通过相互信任的第三方组织获得,并为用户提供验证您Web站点身份的手段。服务器证书包含详细的身份验证信息,如服务器内容附属的组织、颁发证书的组织以及称为公开密钥的唯一的身份验证文件。
1)HSTS重定向技术:将http自动转换为https,减少301重定向。
2)TLS握手优化:在TLS握手完成前客户端就提前向服务器发送数据。
3)会话标识符:服务器记录下与某客户端的会话ID,下次连接客户端发ID过来就可以直接用之前的私钥交流了。
4)OSCP Stapling:服务器将带有 CA 机构签名的 OCSP 响应在握手时发给客户端,省的客户端再去CA查询。
5)完全前向加密PFS:使用更牛逼复杂的秘钥算法。
推荐阅读
>>>新手必备-Linux入门之云计算是什么
>>>红帽认证入门-Linux系统介绍及企业版本选型
>>>新手必备-Linux系统安装配置+Xshell远程连接
>>>Linux常用命令行合集之绝对路径和相对路径
>>>软连接与硬连接
运维界升职加薪必备的云计算技术,你学了吗?
学完高级运维云计算课程之后,你可以: