因此就出现了https服务,将明文传输的内容进行加密,包括http头部和数据部分,由于加密之后的数据是一堆杂乱无章的二进制,因此,就无法获取有意义的信息。
确切的说https并不是一种协议,而是TLS+HTTP两种协议组合的服务。因此http还是以前的http,只是在http和TCP(当然也有DTLS,不多说)层之间加入了ssl协议,这样tcp上层的数据部分就可以加密传输。
其实ssl可以设计的很简单,因为该层主要作用就是协商通信双方加密密钥,然后对上层数据进行加解密。ssl之所以设计如此复杂的原因,还是在于数字证书的存在。首先加密有两种方式,对称加密和非对称加密,其中对称加密的速度要快于非对称加密,因此在实际的应用中数据量大的加密都是对称加密。
但是对称加密无法保证密钥的安全,因此需要非对称加密来传输对称加密所使用的密钥,而非对称加密由于需要验证通信对等方的身份,因此需要数字证书。当然数字证书的作用就是携带签验证通信对等方的身份名,在openssl(openssl是ssl协议那一堆RFC的实现)中,证书还有另一个作用就是携带非对称加密公钥以及非对称算法等。
因此对于使用https传输的网站来说,需要数字证书。