一篇读懂https的本质、证书验证过程以及数据加密

您所在的位置:网站首页 女生跨专业考计算机 一篇读懂https的本质、证书验证过程以及数据加密

一篇读懂https的本质、证书验证过程以及数据加密

2024-01-01 14:26| 来源: 网络整理| 查看: 265

「这是我参与11月更文挑战的第6天,活动详情查看:2021最后一次更文挑战」

1. 什么是HTTPS

HTTP加上加密处理和认证以及完整性保护后即是HTTPS。

它是为了解决HTTP存在的安全性问题,而衍生的协议,那使用HTTP的缺点有:

通信使用明文可能会被窃听 不验证通信方的身份可能遭遇伪装 无法验证报文完整性,可能已遭篡改

HTTPS并非是一种新协议,只是HTTP通信接口部分用SSL和TLS协议代替。通常,HTTP是直接跟TCL通信,当使用了SSL后,则变成先和SSL通信,再有SSL和TCP通信。简而言之,HTTPS是身披SSL协议的这层外壳的HTTP。

补充下,SSL协议是独立于HTTP的协议,所以运行在应用层的其他协议,如Telnet、SMTP均可以配合SSL协议使用,所以也说SSL协议是应用最广泛的网络安全技术。

HTTPS安全可靠,为啥不一致使用HTTPS呢?

与纯文本通信相比,加密通信会消耗更多CPU和内存资源。 购买证书也是一笔不小的开销。 HTTPS比HTTP要慢2-100倍。这是因为SSL慢,一种是通信慢,出去TCP连接、发送HTTP请求/响应外,还必须有SSL通信,整体上通信量增加了。 另一种是,大量消耗CPU和内存等资源,导致处理熟读变慢,这是因为SSL必须进行加密,通常使用SSL加速器来改善问题,但实际上没有根本性的解决方法。

下面一起看下HTTPS请求的全过程详解。

2. 安全通信机制 流程图

安全通信机制流程详解:

客户端发送https请求,把自身支持的秘钥算法套件(SSL指定版本、加密组件列表)发送给服务器 服务器判断自身是否支持该算法套件,如果支持则返回证书信息(本质为公钥,包含了证书颁发机构,网址,过期时间等) ,否则断开连接, 客户端解析证书(通过TLS协议来完成),验证证书是否有效。如果异常,则会提示是否安装证书,常见的就是浏览器搜索栏左侧出现“X”告警按钮等。 如果证书有效、或者是授信安装证书后,开始传送加密信息(用证书加密后的随机值,供加解密使用) 服务端通过私钥解密加密信息,得到客户端发送来的随机值,然后把内容通过该值进行对称加密。这样一来,除非知道私钥,否则是无法获取加密内容的。 服务端返回加密后的内容 客户端通过前面提到的随机值对加密信息进行解密 3. 证书验证过程

SSL 证书中包含的具体内容有证书的颁发机构、有效期、公钥、证书持有者、签名,通过第三方的校验保证了身份的合法

检验基本信息:首先浏览器读取证书中的证书所有者、有效期等信息进行一一校验 校验CA机构:浏览器开始查找操作系统中已内置的受信任的证书发布机构CA,与服务器发来的证书中的颁发者CA比对,用于校验证书是否为合法机构颁发;如果找不到,浏览器就会报错,说明服务器发来的证书是不可信任的。 解密证书:如果找到,那么浏览器就会从操作系统中取出 颁发者CA 的公钥,然后对服务器发来的证书里面的签名进行解密 比对hash值:浏览器使用相同的hash算法计算出服务器发来的证书的hash值,将这个计算的hash值与证书中签名做对比 对比结果一致,则证明服务器发来的证书合法,没有被冒充 此时浏览器就可以读取证书中的公钥,用于后续加密了 4. 扩展:CA证书

CA是证书颁发机构的简称,它会给自己签发一个根证书Root CA,并且CA会通过根证书来签发中间证书,授权中间证书颁发机构签发证书的权限,最后由中间证书颁发机构向用户签发用户证书。之所以多一层中间证书是为了保护根证书,减少根证书被攻击或者被破解的风险。当然中间证书可能不止一个。因此通常用户收到的证书是3个:根证书、中间证书、用户证书。事实上,申请到的证书只是用户证书,其他2个很早就被签发了。

浏览器为何新任CA证书呢?

因为CA是被WebTrust信任的第三方组织,且只有通过WebTrust国际安全审计认证的证书颁发机构CA,其签发的证书才会被各大浏览器信任。根证书库包含浏览器信任的证书颁发机构CA的根证书,有的浏览器会自建根证书库,比如Mozilla Firefox,有的浏览器会使用其他浏览器的根证书库。

浏览器如何校验证书合法性呢?

由于用户证书被中间证书信任,而中间证书被根证书信任,根证书又被浏览器信任,这样一个完整的证书链使得浏览器可以在根证书库内一次检索用户证书、中间证书和根证书,如果能匹配到根证书,那么这一信任链上的所有证书都是合法的。

5. 扩展:openssl生成证书

以生成CA根证书为例:

# 1. 准备ca配置文件,得到ca.conf vim ca.conf # 2. 生成ca秘钥,得到ca.key openssl genrsa -out ca.key 4096 # 3. 生成ca证书签发请求,得到ca.csr openssl req \ -new \ -sha256 \ -out ca.csr \ -key ca.key \ -config ca.conf # 4.生成ca根证书,得到ca.crt openssl x509 \ -req \ -days 3650 \ -in ca.csr \ -signkey ca.key \ -out ca.crt 6.总结

至此一篇文章读懂了Https协议全过程,最后汇总下https的知识点。

HTTP加上加密处理和认证以及完整性保护后是HTTPS。 HTTPS是身披SSL外壳的HTTP 相互校验秘钥的公开秘钥加密技术 证明公开秘钥正确性的证书


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3