ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

图解Https

2022-08-01 15:31:28  阅读:241  来源: 互联网

标签:加密 HTTPS 证书 CA Https 图解 服务端 客户端


HTTPS图解

HTTP 协议传输数据使用的是明文。那在传输敏感信息的场景下,如果客户端和服务端中间有一个黑客作为中间人拦截请求,就可以窃听到这些数据,还可以修改客户端传过来的数据。这就是很大的安全隐患。

HTTPS=SSL/TLS+HTTP,通过使用一系列加密算法来确保信息安全传输,以实现数据传输的机密性、完整性和权威性。

机密性:使用非对称加密来加密密钥,然后使用密钥来加密数据,既安全又解决了非对称加密大量数据慢的问题。你可以做一个实验来测试两者的差距。
完整性:使用散列算法对信息进行摘要,确保信息完整无法被中间人篡改。
权威性:使用数字证书,来确保我们是在和合法的服务端通信。

HTTPS TLS 1.2 连接(RSA 握手)的整个过程

 

 

 作为准备工作,网站管理员需要申请并安装 CA 证书到服务端。CA 证书中包含非对称加密的公钥、网站域名等信息,密钥是服务端自己保存的,不会在任何地方公开。

建立 HTTPS 连接的过程,首先是 TCP 握手,然后是 TLS 握手的一系列工作,包括:

1. 客户端告知服务端自己支持的密码套件(比如 TLS_RSA_WITH_AES_256_GCM_SHA384,其中 RSA 是密钥交换的方式,AES_256_GCM 是加密算法,SHA384 是消息验证摘要算法),提供客户端随机数。
2. 服务端应答选择的密码套件,提供服务端随机数。
3. 服务端发送 CA 证书给客户端,客户端验证 CA 证书(后面详细说明)。
4. 客户端生成 PreMasterKey,并使用非对称加密 + 公钥加密 PreMasterKey。
5。 客户端把加密后的 PreMasterKey 传给服务端。
6. 服务端使用非对称加密 + 私钥解密得到 PreMasterKey,并使用 PreMasterKey+ 两个随机数,生成 MasterKey。
7. 客户端也使用 PreMasterKey+ 两个随机数生成 MasterKey。
8. 客户端告知服务端之后将进行加密传输。
9. 客户端使用 MasterKey 配合对称加密算法,进行对称加密测试。
10. 服务端也使用 MasterKey 配合对称加密算法,进行对称加密测试。

接下来,客户端和服务端的所有通信都是加密通信,并且数据通过签名确保无法篡改。

客户端怎么验证 CA 证书呢?

从服务端拿到的 CA 证书是用户证书,我们需要通过证书中的签发人信息找到上级中间证书,再网上找到根证书。
根证书只有为数不多的权威机构才能生成,一般预置在 OS 中,根本无法伪造。
找到根证书后,提取其公钥来验证中间证书的签名,判断其权威性。
最后再拿到中间证书的公钥,验证用户证书的签名。

这,就验证了用户证书的合法性,然后再校验其有效期、域名等信息进一步验证有效性。

TLS 通过巧妙的流程和算法搭配解决了传输安全问题:使用对称加密加密数据,使用非对称加密算法确保密钥无法被中间人解密;使用 CA 证书链认证,确保中间人无法伪造自己的证书和公钥。

如果网站涉及敏感数据的传输,必须使用 HTTPS 协议。作为用户,如果你看到网站不是 HTTPS 的或者看到无效证书警告,也不应该继续使用这个网站,以免敏感信息被泄露。

HTTPS 双向认证的目的是什么吗?

单向认证一般用于 Web 网站,浏览器只需要验证服务端的身份。

对于移动端 App,如果我们希望有更高的安全性,可以引入 HTTPS 双向认证,也就是除了客户端验证服务端身份之外,服务端也验证客户端的身份。

单向认证和双向认证的流程区别

第一,不仅仅服务端需要有 CA 证书,客户端也需要有 CA 证书。

第二,双向认证的流程中,客户端校验服务端 CA 证书之后,客户端会把自己的 CA 证书发给服务端,然后服务端需要校验客户端 CA 证书的真实性。

第三,客户端给服务端的消息会使用自己的私钥签名,服务端可以使用客户端 CA 证书中的公钥验签。

补充:对于移动应用程序考虑到更强的安全性,我们一般也会把服务端的公钥配置在客户端中,这种方式的叫做 SSL Pinning。也就是说由客户端直接校验服务端证书的合法性,而不是通过证书信任链来校验。采用 SSL Pinning,由于客户端绑定了服务端公钥,因此我们无法通过在移动设备上信用根证书实现抓包。不过这种方式的缺点是需要小心服务端 CA 证书过期后续证书注意不要修改公钥。

总结:

数据传输

务必通过 SSL/TLS 进行传输。对于用于客户端到服务端传输数据的 HTTP,我们需要使用基于 SSL/TLS 的 HTTPS。对于一些走 TCP 的 RPC 服务,同样可以使用 SSL/TLS 来确保传输安全。

标签:加密,HTTPS,证书,CA,Https,图解,服务端,客户端
来源: https://www.cnblogs.com/cgy-home/p/16540481.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有