安全HTTP又称为HTTPS
为什么安全呢,因为它在HTTP协议层与TCP层之间又加了一层,传输安全层TLS / SSL对数据进行加密。
HTTP默认端口号:80
HTTPS默认端口号:443
而这一层是如何工作的呢?
首先介绍下公开密钥加密技术,这一层就是基于这种技术的方案上实现的
一.加密
公开密钥加密技术没有为每个主机使用单独的加密/解密密钥,而是使用了两个非对称密钥:一个用来对主机报文进行编码,另一个用来对主机报文解码,共有加密密钥是大家都知道的,但只有主机才知道私有的解密密钥。
二.签名
除了加/解报文之外,还可以用公开密钥对报文进行签名,以说明是谁编写的报文,验证报文是否被篡改过。如果有恶意攻击者在报文传输过程中对其进行了修改,那么校验和就不再匹配了。由于校验和只有作者保密的私有密钥才能产生,所以攻击者无法伪造出正确的验证码。
这样一来客户端就能很容易的发送安全报文了,而且只需要知道服务器所提供的公开密钥就可以了。
三.数字证书
到这里大家可能又有疑问了: 怎么获得服务器的公开密钥呢?
这里又要引入一个概念:数字证书
在使用HTTPS协议进行通信时,首先Client会向Service请求数字证书
证书内容包括:
1.Web站点的名称和主机名
2.Web站点的公开密钥
3.签名颁发机构的名称
4.来自签名颁发机构的签名
一般浏览器程序会预先存储一些知名机构签发的数字证书,如果Service下发的证书是个很权威的机构,那么浏览器可能已经知道其公开密钥了,如果浏览器不知道这个证书是否可以信任,他们则会弹出一个窗口让用户确认,看用户是否相信这个证书发布者(相信大家都会有这样的经历)。这样一来客户端对于服务器的公开密钥就到手了。目前大部分证书都遵循X509 v3结构(这里就不详细介绍了)
如果大家还要去了解一些HTTPS细节部分,推荐给大家一本书《HTTP权威指南》上面描述的非常细致。
下面是一些常用的加密算法大家有兴趣可以去研究一下。
RSA
DH
ECDHE
ECDH
DHE
网友评论