HTTP和HTTPS的区别
专题简介
- 什么是 http 协议
- http 特点
- 什么是 https
- https 特点
什么是 http 协议
超文本传输协议,是一个基于请求与响应,无状态的,应用层的协议,常基于 TCP/IP 协议传输数据,互联网上应用最为广泛的一种网络协议,所有的 WWW 文件都必须遵守这个标准。设计 HTTP 的初衷是为了提供一种发布和接收 HTML 页面的方法。
http 特点
- 无状态,无连接
- 通信是明文的
- 简单快速、灵活
- 没有验证通信方的身份
- 无法保证数据的完整性
什么是 https
https 不是一个具体的协议,是在 HTTP 基础上进行了 SSL/TLS 加密处理,本质还是 HTTP 通信,在数据传输之前,TCP 握手时候利用 SSL/TLS 建立全信道,加密数据包。 HTTPS 使用的主要目的是提供对网站服务器的身份认证,同时保护交换数据的隐私与完整性。
TLS 是传输层加密协议,前身是 SSL 协议,由网景公司 1995 年发布,有时候两者不区分。
https 特点
- 内容加密:采用混合加密技术,中间者无法直接查看明文内容
- 验证身份:通过证书认证客户端访问的是自己的服务器
- 保护数据完整性:防止传输的内容被中间人冒充或者篡改
https 加密技术
采用非对称加密+对称加密(混合加密技术)来进行加密,就是用非对称加密来沟通获取到对称加密需要的密钥,然后在后续的网络通信中使用对称算法进行加密和解密
为什么需要采用混合加密技术?
- 如果通过对称加密进行前期的加密沟通,那么加密不够严谨,公钥容易被泄露
- 如果全部使用非对称加密进行通信,因为非对称加密比较复杂这样数据传输比较慢
- 所以为了保证前期的加密协商不被窃取以及后期数据的传输效率,加密协商密钥的获取阶段通过非对称加密来协商,后期的数据通信- 通过对称加密来进行通信
什么是对称加密
就是客户端和服务端使用同一个公钥对内容进行加密和解密。
对称加密的问题
如果客户端和服务端共同持有一个公钥,并且没有被别人知道,那数据进行密钥加密的是安全的。 但是服务端如何把自己拥有的密钥给到客户端?假设服务端生成的密钥通过明文给到客户端,在这个过程中密钥被第三方截取了,那么客户端通过这个密钥进行加密的文件,第三方就可以被截取到
什么是非对称加密
就是由服务端同时生成一对公钥和私钥,通过公钥加密文件,需要对应的私钥解密文件。
非对称加密的问题
客户端需要通过服务端生成的公钥进行加密,所以客户端和服务端协商加密规则时,服务端会把公密给到客户端,如果这个期间第三方截取了服务端给到公钥,同时用它生存的公钥匙替换掉服务器的公钥,那么客户端拿到公钥之后进行加密,将数据传给服务端的时候,第三方截取数据,然后用它的私钥进行解密,就可以截取客户端的数据。
什么是数字签名
CA 机构对服务器上传的.crt 文件进行签名验证数据的真实性和完整性
验证服务端的身份
客户端如何知道它拿到的公钥是服务器给的不是伪造?通过数字证书验证公钥的身份。
数字证书
就是一个.crt 文件,一种验证电脑身份的机制,由数字颁发机构 CA 颁发。
数字证书内容
公钥,申请者,域名等其他的信息。
验证数据的真实性和完整性
客户端如何保证拿到的数字证书是真实的并且完整的?
摘要
将数字证书.crt 进行 hash,就生成了一个摘要,生成摘要之后是不可逆的。
摘要的作用
主要是将明文的数字证书进行加密处理再进行数字签名
为啥要先生成摘要再加密呢,不能直接加密?
因为使用非对称加密是非常耗时的。如果把整个证书内容都加密生成签名的话,客户端验验签也需要把签名解密,证书明文较长,客户端验签就需要很长的时间,而用摘要的话,会把内容很长的明文压缩成小得多的定长字符串,客户端验签的话就会快得多。
如何进行数字签名
对数字证书进行签名,验证数字证书的真实和完整性,CA 机构用自己的私密对摘要进行加密,生成一个数字签名。
如何申请数字证书
- 服务器将公钥,申请者,域名等其他的信息生成一个.crt 文件然后给到 CA 机构
- CA 机构收到申请,验证申请者信息,如果没有异常,CA 机构通过.crt 这个明文文件做一个 HASH,得到一个信息摘要。
- CA 机构用自己的私钥对 HASH 进行加密,得到一个秘文,这就是数字签名
- 然后通过数字签名+.crt 明文生成一个数字证书
数字签名如何验证数字证书的真实性
- 浏览器通过 CA 证书提供的公钥对数字签名进行解密得到 hash 值
- 浏览器再通过 CA 证书提供的公钥对 crt 原文进行 hash 值处理
- 将数字签名生成的 hash 值和.crt 原文生成的 hash 值进行对比,如果相等,那么数字证书就是完整的。
如何验证颁发机构权威性
通过上面的步骤已经可以验证公钥的身份,以及数字证书的完整性和真实性,但是假如 CA 机构是被第三方入侵者伪造的?这里就需要验证颁发机构的权威性,需要验证颁发机构的权威性,那么就需要更权威的颁发机构来验证,所以就会有一个根证书颁发机构,这个根证书颁发机构是被大家公认的权威机构,通过根证书颁发机构给中证书颁发机构受信,再由中证书颁发机构给用户证书颁发机构授信,来保证用户证书颁发机构的权威性。
证书链
用户颁发机构的权威性是通过证书链来验证的, 证书链主要是有根证书(根证书颁发机构颁发的证书),中间证书(中间证书颁发机构颁发的证书),用户证书(用户证书颁发机构颁发的证书)三部分组成,只有这三个证书都通过了,那么才能证明用户颁发机构证书的权威性。