HTTPS/TLS/SSL 都是什么,有什么区别?
SSL是基于HTTP之下TCP之上的一个协议层,是基于HTTP标准并对TCP传输数据时进行加密,所以HPPTS是的简称。TSL可以看作是SSL的升级,现在用的基本上都是TSL证书,但是由于历史习惯,还是会叫做SSL证书。HTTPS的工作流程还是比较复杂的,为了安全着想,设计者们也是花了大心思的。SSL根证书的颁发机构CA是公认的证书颁发机构,可信度高。证书是链式的,链越多,则认证时间越长,一般证书
HTTPS/TLS/SSL
名称 | 简介 |
---|---|
HTTPS | 全称:Hyper Text Transfer Protocol over Secure Socket Layer ,主要由两部分组成: HTTP + SSL/TLS ,简单说就是传输安全的 HTTP ,在 HHTP 的基础上加了一层处理加密信息的模块。 |
SSL | 全称:Secure Socket Layer ,用于网络连接安全,在浏览器和服务器之间构造安全通道来进行数据传输,防止数据传输过程中的敏感信息被窃取,可以看作是网站的身份证。 |
TLS | 全称:Transport Layer Security ,是 SSL 的升级版,它修复了早期 SSL 协议中的一些安全漏洞(由于 SSL 这一术语更常用,所以现在我们仍然将 TLS 证书叫做 SSL 证书)。 |
SSL
和 TLS
的历史版本:
- SSL 1.0 – 由于安全问题从未公开发布。
- SSL 2.0 – 1995年发布。2011年弃用。存在已知的安全问题。
- SSL 3.0 – 1996年发布。2015年弃用。存在已知的安全问题。
- TLS 1.0 – 1999年作为SSL 3.0的升级发布。计划在2020年弃用。
- TLS 1.1 – 2006年发布。计划在2020年弃用。
- TLS 1.2 – 2008年发布。
- TLS 1.3 – 2018年发布。
一般我们新购买的证书都是最新的 TLS
证书。
HTTPS 工作原理
HTTPS
在传输数据之前需要客户端(浏览器)与服务端(网站)之间进行一次握手,在握手过程中将确立双方加密传输数据的密码信息。TLS/SSL
协议不仅仅是一套加密传输的协议,更是一件经过艺术家精心设计的艺术品,TLS/SSL
中使用了非对称加密,对称加密以及 HASH
算法。
- 浏览器发送自己支持的一套加密规则给网站
- 网站从支持的规则种选出一套加密算法与哈希算法,并将自己的身份信息以证书的方式传回给浏览器。证书包括网站地址,加密公钥,以及证书的颁发机构等信息。
- 浏览器获取到网站证书后要做以下工作:a) 验证证书的合法性(颁发证书的机构是否合法,证书中包含的网站地址是否与正在访问的地址一致等),如果证书受信任,则浏览器栏里面会显示一个小锁头,否则会给出证书不受信的提示。 b) 如果证书受信任,或者是用户接受了不受信的证书,浏览器会生成一串随机数的密码,并用证书中提供的公钥加密。 c) 使用约定好的
HASH
算法计算握手消息,并使用生成的随机数对消息进行加密,最后将之前生成的所有信息发送给网站。 - 服务器收到数据后要做以下操作: a) 使用自己的私钥将信息解密取出密码,使用密码解密浏览器发来的握手消息,并验证
HASH
是否与浏览器发来的一致。 b) 使用密码加密一段握手消息,发送给浏览器。 - 浏览器解密并计算握手消息的
HASH
,如果与服务端发来的HASH
一致,此时握手过程结束,之后所有的通信数据将由之前浏览器生成的随机密码并利用对称加密算法进行加密。
浏览器证书列表中的证书是怎么来的?
证书都是由 CA
(Certificate Authority
,证书认证机构)签名的,CA
就是网络世界里的公安局、公证中心,具有极高的可信度,所以由它来给各个公钥签名,信任的一方签发的证书,那必然证书也是被信任的。
我们自己申请的证书一般都不是根证书,因为太贵了,会有很多中间证书机构生成中间证书。证书是有链式关系的,根证书->中间证书->中间证书->…。浏览器在验证证书的时候,会一级级的向上认证,所有的证书都是受信任的,这个验证才受信任。
总结
-
SSL
是基于HTTP
之下TCP
之上的一个协议层,是基于HTTP
标准并对TCP
传输数据时进行加密,所以HPPTS
是HTTP+SSL/TLS
的简称。TLS
可以看作是SSL
的升级,现在用的基本上都是TLS
证书,但是由于历史习惯,还是会叫做SSL
证书。 -
HTTPS
的工作流程还是比较复杂的,为了安全着想,设计者们也是花了大心思的。 -
SSL
根证书的颁发机构CA
是公认的证书颁发机构,可信度高。证书是链式的,链越多,则认证时间越长,一般证书三四层链。
参考
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)