1.通信使用明文(不加密),内容可能被窃听。 2.不验证通信方的身份,有可能遭遇伪装。 3.无法证明报文的完整性,有可能已遭篡改。 HTTP本身不具备加密功能,所以无法做到对通信整体进行加密。在TCP/IP的过程中就可能遭到窃听。
HTTP协议中没有加密机制,可以通过与SSL(Secure Socket Layur,安全套接层)或TLS(Transport Layer Security,安全传输协议)的组合使用,加密HTTP通信协议。 用SSL建立安全通信线路,与SSL组合使用的HTTP称为HTTPS(HTTP Secure,超文本传输安全协议)。
对参与通信的内容本身进行加密,对HTTP报文主题进行加密。前提:客户端和服务器同时具备相同的加密和解密机制。但是HTTP的请求和响应不会对通信方进行确认,不验证通信方的身份可能遭到伪装。 不确认通信方,可能存在以下隐患:
Web服务器可能遭到伪装客服端可能遭到伪装无法确定正在通信的对方是否具备访问权限。即使是无意义的请求也会收下,无法阻止海量请求下的Dos攻击(拒绝服务攻击)SSL不仅提供加密处理,还是用了一种称为证书的手段,可用于确定方。
使用HTTPS通信时,先和SSL通信,再有SSL和TCP通信。
SSL采用一种叫做公开密匙加密的加密处理方式。 **共享密匙:**也叫对称密匙加密,加密与解密公用一个密匙。 **公开密匙:**也叫非对称密匙加密,公开密匙的加密方式很好的解决了共享密匙加密的困难。公开密匙加密使用一对非对称的密匙,一把私有密匙,一把公开密匙。私有密匙不能让任何人知道,公开密匙可以随意发布。 使用公开密匙加密,发送密文的一方使用对方的公开密匙进行加密,对方收到加密信息后,再使用自己的私有密匙进行解密。不发送自己的私有密匙,不必担心密匙被攻击者窃听而盗走。
HTTPS采用共享密匙和公开密匙两者并用的混合加密机制。若密匙能过安全交换,那么有可能会考虑仅使用公开密匙来加密通信,但是公开密匙处理速度慢,所以在交换密匙环节使用公开密匙加密方式,之后的建立通信交换报文则使用共享密匙加密方式。
数字证书认证机构(CA)和其相关机关颁发的公开密匙证书。将公开密匙放入公匙证书后绑定在一起。
