TLS、SSL、CA 证书、公钥、私钥。。。本日捋一捋!

源代码 2024-9-10 06:14:58 71 0 来自 中国
松哥近来在和小搭档们连载 gRPC,怎样确保 gRPC 通讯的安全性?这就涉及到 TSL 了,但是思量到大概有小搭档对加密毗连这一整套方案比力生疏,因此我们本日先用一篇文章跟大家捋清楚这些概念,概念搞明白了,再来看 TSL+gRPC 就很容易了。
1. HTTP 的题目

HTTP 协议是超文本传输协议(Hyper Text Transfer Protocol)的缩写,它是从 WEB 服务器传输超文本标记语言 HTML 到当地欣赏器的传送协议。HTTP 筹划之初是为了提供一种发布和汲取 HTML 页面的方法,时至本日,它的作用已经不光仅于此了。
对于我们 Java 工程师而言,HTTP 应该算是再认识不过的东西了,现在 HTTP 有多个版本,利用较多的是 HTTP/1.1 版本。
然而 HTTP 协议有一个缺陷那就是它是通过明文传输数据的,用户通过 HTTP 协议传输的内容很容易被恶意拦截,而且黑客可以伪装成服务端,向用户传送错误的信息,而且能容易获取用户的隐私信息,而这些操纵用户是完全无感知的。
由于存在如许的安全隐患,如今小搭档们见到的大部分网站都在渐渐转为 HTTPS,HTTP 网站会越来越少了。
2. HTTPS

HTTPS(HyperText Transfer Protocol Secure)中文译作超文本传输安全协议,这是一种通过盘算机网络举行安全通讯的传输协议。
HTTPS 本质上还是由 HTTP 举行通讯,只是在 HTTP 协媾和 TCP 层之间增长了一个 SSL 的安全传输协议。整个传输的加密过程都在新的安全层 SSL/TLS 中实现,而原来的 HTTP 层的传输流程保持稳固,如许就很好地兼容了旧的 HTTP 协议,也相沿了 TCP/IP 协议族的分层头脑。
通过 HTTPS,客户端可以确认服务端的身份,包管数据在传输过程中不被窜改,当我们在本身的欣赏器上与某一个网站创建 HTTPS 毗连的时间,满足如下环境可以表现这个服务端可以被信托:

  • 起首我们的操纵体系中安装了精确且受信托的证书。我们在 cmd 下令行中实验 certmgr.msc 下令,可以检察操纵体系已经安装的证书列表。
[图片上传失败...(image-d80f2e-1679536792888)]

  • 欣赏器本身精确实现了 HTTPS。
  • 被访问的网站提供了一个证书,这个证书是由一个操纵体系所信托的证书颁发机构签发的,操纵体系所信托的证书颁发机构一样寻常都预装在操纵体系中,通过第一步的方式可以检察。
  • 被访问的网站所提供的证书被成功认证。
这里边涉及到一些证书和协议的概念,接下来松哥和大家把整个过程捋一捋。
3. TLS/SSL

前面我们提到,HTTPS 就是在 HTTP 的根本之上增长了 TLS/SSL,那么这两个东西该怎样明白呢?
SSL/TLS 是一种暗码通讯方案,算是现在利用最广泛的暗码通讯方案了。SSL 全称是 Secure Socket Layer,中文译作安全套接层,是 1994 年由 Netscape 公司筹划的一套协议,并与 1995 年发布了 3.0 版本;TLS 全称是 Transport Layer Security,中文译作传输层安全,则是 IETF 在 SSL3.0 根本上筹划的协议,现实上相当于 SSL 的后续版本,现在 TLS 先后迭代了 TLS 1.0、TLS 1.1、TLS 1.2 和 TLS 1.3,现在被广泛利用的是 TLS 1.2 版本。
SSL/TLS 涉及到了暗码学中的对称加密、非对称加密、数字署名等等,算是暗码学范畴里的集大成者了。
3.1 TLS

接下来我们就来看看 TLS 怎样确保 HTTP 安全。
为了确保客户端和服务端之间的数据安全,我们很容易想到一种方案就是对传输的数据举行加密,没错,这是一个办法,究竟上也是这么做的。
加密又分为两种:

  • 对称加密
  • 非对称加密
那么该利用哪一种呢?
对称加密,也就是加密密钥息争密密钥是同一个,当欣赏器和服务端必要举行通讯的时间,约定好一个密钥,然后利用这个密钥对发送的消息举行加密,对方收到消息之后再利用类似的密钥对消息举行解密。但是,在 B/S 架构的项目中,这种方案显然不符合,一个网站把本身的密钥告诉全天下全部的欣赏器,那加密和不加密另有区别吗?
有小搭档大概又想到了不对称加密,不对称加密倒是个办法,由于不对称加密是有一个密钥对公钥和私钥,公钥可以公布出来告诉全部人,私钥只有本身知道。通讯的时间,客户端起首利用公钥对消息举行加密,服务端收到之后,再通过私钥对消息举行解密,这看起来好像挺完满的。但是!!!非对称加密存在一个题目,就黑白对称加密息争密相当耗时,通过这种方式处置惩罚加解密服从太低。
那怎么办?我们可以将两者团结起来。
详细来说,就是如许:起首服务端会天生一个非对称加密的密钥对,私钥本身生存,公钥发送给客户端,客户端拿到这个公钥之后,再天生一个对称加密的密钥,然后把对称加密的密钥通过公钥举行加密,加密之后发送给服务端,服务端通过私钥举行解密,如许客户端和服务端就可以通过对称加密举行通讯了。
究竟上,TLS 大抵上的思绪就是如许的。
不过上面这个方案还是有一个毛病,那就是服务端要通过明文传输的方式把公钥发送给客户端,这个过程还是不安全的,大概被人恶意截胡,那么这个题目该怎样办理呢?
这就涉及到别的一个概念叫做数字证书了。
3.2 CA

数字证书是一个包罗了目标网站各种信息如网站域名、证书有效期、签发机构、用于天生对称密钥的公钥、上级证书签发的署名等的文件,通过数字证书我们可以确认一个用户大概服务站点的身份。
现实场景中的数字证书是一系列的,形成了一个信托链,信托链的最顶端是 CA。
CA 是 Certificate Authority 的简写,它是一个负责发放和管理数字的证书的第三方权势巨子机构。CA 的工作流程是如许的:

  • CA 本身给本身颁发的用本身的私钥署名的证书称为根证书,根证书的私钥安全性至关紧张,根证书的私钥都是被生存在离线盘算机中,有严格的操纵规章,每次必要利用时,会有专人将数据通过 USB 拷贝已往,操纵完了以后,再将数据带出来(这个专指 CA 根证书的私钥)。
  • 一个用户想要获取一个证书,起首本身得有一个密钥对,私钥本身留着,公钥以及其他信息发送给 CA,向 CA 提出申请,CA 判明用户的身份之后,会将这个公钥和用户的身份信息绑定,而且为绑定后的信息举行署名(署名是通过 CA 根证书的私钥举行的),末了将署名后的证书发给申请者。
  • 一个用户想要判定一个证书的真伪,就通过 CA 的公钥对证书上的数字署名举行验证,验证通过,就以为这个这个证书是有效的。
上面这个流程中有一个紧张条件,那就是 CA 受到大家全部人的信托。
然而在现实操纵中,我们并不能直接去跟 CA 申请一个数字证书,由于全天下要认证的内容太多了,CA 搞不过来,而且频仍的找 CA 申请,另有大概导致私钥走漏,这可就是一个大的灾难了。
那怎么办呢?现实操纵中,我们可以基于 CA 来构建一个信托链。详细来说,步调是如许:

  • 起首我们的手机、条记本等操纵体系中都预装了 CA 颁发的根证书,他们是全部信托构建的基石,前面松哥已经截图给大家看了 Windows 中预装的根证书了。
  • 假设 CA 签发了一个证书 A,在这个过程中 CA 称为 Issuer,A 称为 Subject,假设 A 是一个受信托的中心证书,已经预装在我们的操纵体系中了。如今由 A 利用它本身的私钥给某一个网站签发了一个证书 B。
  • 如今当我们的电脑必要访问该网站的时间,该网站就会给我们发来一个证书 B,由于我们的欣赏器并不知道 B 证书是否合法,但是我们的电脑上已经预装了 A 证书,我们可以从 A 证书中提取出 A 的公钥,然后利用 A 的公钥对 B 证书的署名举行验证(由于 B 证书的署名是 A 的私钥签的),如果验证通过了,就阐明 B 是合法的。
  • 类似的原理,B 也可以继承签发 C 证书,C 继承签发 D 证书,如许就形成了一个信托链。
  • 如果服务端的署名是 D 证书,那么一样寻常来说,服务器返回给欣赏器的就会包罗 B、C、D 三个证书(由于 A 证书已经在我们的电脑上了),纵然只返回 D 证书,欣赏器也可以根据 D 书中的信息,主动下载到 B、C 两个证书然后举行验证。
松哥记得从前上大学的时间,在 12306 网站上买火车票,第一次访问的时间必须要本身先手动安装一个根证书到体系中,然后才气访问。这就是由于当时 12306 所利用的证书的签发机构不被欣赏器承认,类似于上面的第 3 步,12306 给我发了一个数字证书 B 返来,但是欣赏器上没有符合的公钥对这个 B 证书举行验证,当我往本身的体系上安装了 12306 给的证书之后,相当于我的电脑上有了一个证书 A,如今就可以对 B 证书举行验证了。
总结一下:

  • CA 是一个权势巨子的机构,是一个发证构造,CA 发出来的证书可以证明一个人大概构造的身份。
  • 任何人都可以得到 CA 的证书(含公钥),用以验证 CA 所签发的证书。
  • 每一个数字证书都是由上级证书的私钥来签发的,处于最顶层的就是 CA 签发的根证书了,这个根证书没有上级证书了,以是这个根证书现实上是由 CA 本身的私钥来签发的,这也叫做自署名,即 Self-Signed。
当我们有了数字署名之后,就可以办理 3.1 末节末了提出的题目了。服务端将数字署名发给欣赏器,欣赏器利用体系已经内置的公钥验签,确认署名没题目,然后就提取出来数字署名中的公钥,开始协商对称加密的私钥了~
好啦,有了这些知识储备之后,下篇文章松哥来和大家聊一聊 TLS+gRPC 怎么玩!
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-11-23 20:29, Processed in 0.165215 second(s), 32 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表