首页 > 其他分享 >https 的本质、证书验证过程以及数据加密

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

时间:2024-10-30 11:09:48浏览次数:6  
标签:浏览器 证书 ca SSL https 加密 CA

1. 什么是 HTTPS

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

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

1.通信使用明文可能会被窃听

2.不验证通信方的身份可能遭遇伪装

3.无法验证报文完整性,可能已遭篡改

 

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

 

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

 

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

1.与纯文本通信相比,加密通信会消耗更多 CPU 和内存资源。

2.购买证书也是一笔不小的开销。

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

 

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

2. 安全通信机制

1.流程图

2.

3.

 

安全通信机制流程详解:

1.客户端发送 https 请求,把自身支持的秘钥算法套件(SSL 指定版本、加密组件列表)发送给服务器

2.服务器判断自身是否支持该算法套件,如果支持则返回证书信息(本质为公钥,包含了证书颁发机构,网址,过期时间等) ,否则断开连接,

3.客户端解析证书(通过 TLS 协议来完成),验证证书是否有效。如果异常,则会提示是否安装证书,常见的就是浏览器搜索栏左侧出现“X”告警按钮等。

4.如果证书有效、或者是授信安装证书后,开始传送加密信息(用证书加密后的随机值,供加解密使用)

5.服务端通过私钥解密加密信息,得到客户端发送来的随机值,然后把内容通过该值进行对称加密。这样一来,除非知道私钥,否则是无法获取加密内容的。

6.服务端返回加密后的内容

7.客户端通过前面提到的随机值对加密信息进行解密

3. 证书验证过程

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

1.检验基本信息:首先浏览器读取证书中的证书所有者、有效期等信息进行一一校验

2.校验 CA 机构:浏览器开始查找操作系统中已内置的受信任的证书发布机构 CA,与服务器发来的证书中的颁发者 CA 比对,用于校验证书是否为合法机构颁发;如果找不到,浏览器就会报错,说明服务器发来的证书是不可信任的。

3.解密证书:如果找到,那么浏览器就会从操作系统中取出 颁发者 CA 的公钥,然后对服务器发来的证书里面的签名进行解密

4.比对 hash 值:浏览器使用相同的 hash 算法计算出服务器发来的证书的 hash 值,将这个计算的 hash 值与证书中签名做对比

5.对比结果一致,则证明服务器发来的证书合法,没有被冒充

6.此时浏览器就可以读取证书中的公钥,用于后续加密了

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 的知识点。

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

2.HTTPS 是身披 SSL 外壳的 HTTP

3.相互校验秘钥的公开秘钥加密技术

4.证明公开秘钥正确性的证书

京东云发免费SSL证书啦!!!

TrustAsia DV 单域名90天0元!快速颁发,经济实惠,保护网站数据安全,适合个人/企业网站及建站开发测试使用。

添加企业微信获取

image.png

标签:浏览器,证书,ca,SSL,https,加密,CA
From: https://www.cnblogs.com/Jcloud/p/18515472

相关文章

  • (转)Go加密算法总结
    原文:https://www.cnblogs.com/you-men/p/14160439.html加密解密在实际开发中应用比较广泛,常用加解密分为:“对称式”、“非对称式”和”数字签名“。对称式:对称加密(也叫私钥加密)指加密和解密使用相同密钥的加密算法。具体算法主要有DES算法,3DES算法,TDEA算法,Blowfish算法,RC5算......
  • 网站有多个域名,使用哪种类型的SSL证书?
    当网站拥有多个域名时,可以选择以下几种类型的SSL证书来满足安全需求:一、多域名SSL证书(SAN证书)定义:多域名SSL证书,也被称为SAN(SubjectAlternativeName)证书或UCC(UnifiedCommunicationsCertificate)证书,是一种特殊的SSL证书类型,可以保护一个主域名以及多个其他附属域名。这些......
  • 【前端】在 Next.js 开发服务器中应该如何配置 HTTPS?
    在Next.js的开发环境中,默认情况下是使用HTTP协议的。但是,您可以通过一些配置来启用HTTPS。这在开发阶段可能很有用,尤其是在需要测试涉及安全传输的应用场景时。下面是如何在Next.js开发环境中配置HTTPS的步骤:方法一:使用https模块您可以使用Node.js的内置模......
  • 新工具可绕过 Google Chrome 的新 Cookie 加密系统
    一位研究人员发布了一款工具,用于绕过Google新推出的App-Bound加密cookie盗窃防御措施并从Chrome网络浏览器中提取已保存的凭据。这款工具名为“Chrome-App-Bound-Encryption-Decryption”,由网络安全研究员亚历山大·哈格纳(AlexanderHagenah)发布,因为他注意到其他......
  • 最新宝塔安装教程:Linux 稳定版 9.0 宝塔面板+免费SSL证书解析
    在本教程中,我们将详细介绍如何在Linux服务器上安装宝塔面板的最新稳定版9.0,并为您的网站添加免费的SSL证书。此教程适合初学者和有一定经验的用户。通过SSH连接至VPS服务器后,您将能够顺利完成宝塔安装和初步设置,这篇文章将为您提供简单易懂的操作指南,帮助您在几分钟内完成服务......
  • 最新宝塔安装教程:Linux 稳定版 9.0 宝塔面板+免费SSL证书解析
    在本教程中,我们将详细介绍如何在Linux服务器上安装宝塔面板的最新稳定版9.0,并为您的网站添加免费的SSL证书。此教程适合初学者和有一定经验的用户。通过SSH连接至VPS服务器后,您将能够顺利完成宝塔安装和初步设置,这篇文章将为您提供简单易懂的操作指南,帮助您在几分钟内完成服务......
  • Spring Boot 3.x 整合 Druid 数据库连接池(含密码加密)
    SpringBoot3.x整合Druid数据库连接池(含密码加密)1.为什么需要数据库连接池?在传统的数据库连接中,每一次与数据库连接都会消耗大量的系统资源和时间。数据库连接池会提前创建一定数量的数据库连接保存在池中,用来复用,避免了重复建立连接和关闭连接的开销优点:**提高性......
  • Python使用AES进行盐值加密和解密
    方法一:抽象类版importbase64fromCrypto.CipherimportAESclassEncryptDate:def__init__(self,key):self.key=key.encode('utf-8')#初始化密钥self.length=AES.block_size#初始化数据块大小self.aes=AES.new(self.key,AE......
  • 对称加密算法和非对称加密算法
    目录对称加密(SymmetricEncryption)非对称加密(AsymmetricEncryption)对比分析应用场景RSA加密算法是一种非对称加密算法。AES算法全称AdvancedEncryptionStandard,又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且......
  • RSA加密算法实现
    Java实现RSA加密算法示例,包括密钥对的生成、加密和解密过程。首先需要导入Java的加密库,这些功能主要通过java.security和javax.crypto包提供。先生成了一个RSA密钥对,包括一个公钥和一个私钥。然后使用公钥加密了一个字符串,并使用私钥解密了加密后的字符串。加密和解密的结果都......