1。http的缺陷 http是通讯是基于tcp的三次握手建立可靠的通讯,当建立通讯关系后,客户端跟服务端就可以进行通讯。但是二者通讯内容是没有任何的加密处理,暴露在网络中,很容易就可以被黑客窃取和伪造。 2。https https与http的区别在于多了个s,这个s体现在ssl或tls(加密通道的规范),https使用对称加密、非对称加密和ca机构证书的组合来保证数据通讯的安全。(1)如果单纯使用对称加密进行数据传输。 对称加密就是以一个串为密钥,数据加解密都使用该密钥进行处理。 客户端和服务端在建立连接前需要在网络上传输这个约定好得密钥,然后往后的通讯都基于此密钥进行加密通讯。但这样带来的问题是,密钥是通过网络上传输的,这样就带来很大的风险,黑客很容易就能截取到密钥,然后伪造成服务端或者客户端窃取数据了。 (2)升级,使用非对称加密进行数据加密通讯 同样的,客户端和服务端在建立连接前需要在网络中传输服务端的公钥给客户端,在传输的过程中很容易就被第三方截取到公钥。第三方可以伪造成客户端,跟服务端进行通讯。同时可以伪造成服务端,发送伪造的公钥给客户端。 造成这样尴尬的情况,是因为这个公钥缺乏了认证,很容易就被伪造。 (3)引入第三方CA中心 CA中心是在全球中占有一定信誉的机构,在这里申请证书是需要付款的,同时他也会承担一定的赔偿的,如果是因为CA中心的私钥被窃取了,是要赔偿给客户的。 客户在申请证书时,需要提交相关信息,其中包含服务端的公钥。CA中心就会将相关信息用CA中心的私钥(ca。key)进行对称加密,加密后的内容就是我们常用的证书。而CA中心的公钥是内置在客户端中,如操作系统和浏览器(前提该CA中心是正规机构) https建立通讯的流程: (1)客户端拿到证书后,用ca。public公钥进行解密,获取服务端的公钥server。public。 (2)客户端随机生成一个字符串。 (3)用服务端的公钥server。public对随机字符串进行加密,生成通讯密钥密文。 (4)将通讯密钥传送给服务端,服务端对通讯密钥密文进行解密(server。key),以后客户端和服务端都使用该随机字符串对密文进行加解密处理(对称加密)。 我们要思考的点: 引入了证书是否能够阻挡第三方窃取信息呢? 第三方拿到证书后,他也是可以进行解密获取到服务端的公钥的,但遗憾的是他解不开通讯密钥,因为需要 服务端的私钥,而服务端的私钥自始至终都没有在网络上暴露过,公钥解不开使用公钥加密的密文。 第三方能不能伪造成服务端,给客户端一个伪造的证书? 答案是不能的。因为你不可能拿得到ca中心的私钥(ca。key),要生成一个合法可信任的证书必须由可信任的 CA中心机构进行颁发。