http&https协议
1. http协议
(1)概念:
- 就是服务器和客户端进行数据交互的一种形式。只有服务器和客户端二者都遵从了http协议,才能进行数据交互。(就像我们都讲“普通话”,如果各讲各的方言,我们就“交流”不了了)
(2)常用请求头信息
- User-Agent:请求载体的身份标识。包含当期操作系统的版本,当前浏览器的版本等等。如果是编写的代码程序请求,则内容又不一样了,但始终代表请求载体的身份标识。
- Connection:请求完毕后,是断开连接还是保持连接
(3)常用响应头信息
- Content-Type:服务器响应回客户端的数据类型
(4)https协议
- 安全的超文本传输协议 (数据传输过程中进行数据加密)
(5)加密方式
- 对称秘钥加密(加密方式由客户端制定)
-
首先,客户端制定某种加密方式,这种加密方式制定好后,可以使用客户端制定好的加密方式对即将要发送给服务器端的数据进行加密。
-
加密后,客户端需要将加密后的密文包括解密的方式(密钥)一起发送给服务器端
-
服务器端接收密文和密钥,就可以用密钥对密文解密,服务器端就可以得到原数据了
-
弊端:如果在传输过程中,第三方机构可以拦截到请求,那么被拦截后请求中携带的密钥和密文就会一起被拦截到,那么密文就会被密钥解密,密文(数据)就会暴露,存在危险。
- 非对称秘钥加密
-
首先,让服务器端制定一种加密方式,服务器端制定好后,将这种(公开密钥)加密方式发送给客户端,客户端拿到这种机密方式后,客户端就会使用该加密方式(公开密钥)对即将要发送给服务器端的数据进行加密,加密后,只会将密文发送给服务器端。
-
服务器端接收到密文后,用自己的私有密钥进行解密
-
好处:解密的钥匙根本就不会进行传输,因此也就避免了被挟持的风险。就算公开密钥被窃听者拿到了,也很难进行解密,因为解密过程是对离散对数求值。(传输过程中,密文密钥分开)。
-
仍存在弊端:
- (1)如何保证接收端向发送端发出公开密钥的时候,发送端确保收到的是预先要发送的,而不会被挟持。(可能发送端发送的公开密钥被第三方挟持,然后第三方篡改造了一个假的公开密钥发送给接收端,那么接收端就会按照这个假的密钥去加密,这就存在了风险)只要是发送密钥,就有可能有被挟持的风险。
- (2)非对称加密的方式效率比较低,它处理起来更为复杂,通信过程中使用就有一定的效率问题而影响通信效率。
- 证书秘钥加密(https所采用 ):可以解决上述非对称加密的弊端(在非对称加密中我们无法保证客户端所拿到的公钥一定是由服务器端所创建的)
-
证书认证机构(第三方机构)由服务器端和客户端都充分信任的第三方机构
-
首先服务器还是会制作一种加密方式,我们称之为公钥,然后服务器端会先把公钥提交到证书认证机构中,机构接收到公钥后,会对公钥做一个审核,审核通过后,该机构就会对公钥进行数字签名(数字签名最主要的作用:用来防伪)。然后证书认证机构就会将已经携带了数字签名的公钥封装到证书中,将这个证书一并发送到客户端。(证书包含:已经做了数字签名的公钥)客户端会看到这个证书是由证书认证机构所签订的。这样客户端就会使用携带了数字签名的公钥对数据加密发送到服务器端,服务器端会使用私钥解密。
-
加入了证书认证机构就可以保证,客户端所拿到的公钥一定是由服务器端所产生的(因为客户端所拿到的公钥有数字签名),才能够使用公钥对数据进行加密。
-
一般情况下,证书的数字签名是很难被伪造的,这取决于认证机构的公信力。