Skip to Content
gRPC:快速入门
book

gRPC:快速入门

by Kasun Indrasiri, Danesh Kuruppu
May 2025
Intermediate to advanced
204 pages
2h 24m
Chinese
O'Reilly Media, Inc.
Content preview from gRPC:快速入门

第 6 章 安全的 gRPC 安全的 gRPC

本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com

基于 gRPC 的应用程序通过 Network+ 进行远程通信。这就要求每个 gRPC 应用程序将其入口点暴露给其他需要与之通信的程序。从安全角度来看,这并不是一件好事。入口点越多,攻击面就越广,被攻击的风险就越高。因此,确保通信安全和入口点安全对于任何实际用例都至关重要。每个 gRPC 应用程序都必须能够处理加密信息、加密所有节点间通信、验证和签署所有信息等。

在本章中,我们将介绍一系列安全基础知识和模式,以应对我们在实现应用级安全方面所面临的挑战。简单来说,我们将探讨如何确保微服务之间通信通道的安全,以及如何验证和控制用户的访问。

因此,我们首先要确保通信渠道的安全。

使用 TLS 验证 gRPC 通道

传输层安全(TLS)的目的是在两个通信应用程序之间提供隐私和数据完整性。这里指的是在 gRPC 客户端和服务器应用程序之间提供安全连接。根据 "传输层安全协议规范",当客户端和服务器之间的连接是安全的,它应具有以下一个或多个属性:

连接是私人的

对称加密用于数据加密。这种加密方式只使用一个密钥(秘密密钥)进行加密和解密。这些密钥根据会话开始时协商好的共享秘密为每个连接生成唯一的密钥。

连接可靠

之所以会出现这种情况,是因为每条信息都包含信息完整性检查,以防止数据在传输过程中发生未被发现的丢失或篡改。

因此,通过安全连接发送数据非常重要。使用 TLS 确保 gRPC 连接的安全并非难事,因为这种身份验证机制已内置在 gRPC 库中。它还提倡使用 TLS 来验证和加密交换。

那么,我们如何在 gRPC 连接中实现传输级安全呢?客户端和服务器之间的安全数据传输可以通过单向或双向方式实现(这也被称为相互 TLS 或 mTLS)。在下面的章节中,我们将分别讨论如何启用这两种方式的安全性。

启用单向安全连接

在单向连接中,只有客户端对服务器进行验证,以确保从目标服务器接收数据。在客户端和服务器之间建立连接时,服务器会与客户端共享其公共证书,然后客户端会验证收到的证书。对于 CA 签发的证书,这需要通过证书颁发机构(CA)来完成。一旦证书通过验证,客户端就可以发送使用秘钥加密的数据。

CA 是一个受信任的实体,负责管理和签发用于公共网络安全通信的安全证书和公用密钥。由该可信实体签署或签发的证书称为 CA 签发证书。

要启用 TLS,我们首先需要创建以下证书和密钥:

server.key

用于签名和验证公钥的 RSA 私钥。

server.pem/server.crt

用于分发的自签名 X.509 公钥。

备注

RSA是三个发明者名字的缩写:Rivest、Shamir 和 Adleman。RSA 是最流行的公钥密码系统之一,被广泛用于安全数据传输。在 RSA 中,使用公钥(每个人都可能知道)对数据进行加密。然后使用私人密钥解密数据。其原理是,只有使用私钥才能在合理的时间内解密用公钥加密的信息。

要生成密钥,我们可以使用 OpenSSL 工具,它是 TLS 和安全套接字层(SSL)协议的开源工具包。它支持生成不同大小的私钥和通行短语、公共证书等。还可以使用mkcertcertstrap 等其他工具来轻松生成密钥和证书。

我们不会在这里介绍如何生成自签名证书的密钥,因为源代码库中的 README 文件已经详细介绍了生成这些密钥和证书的步骤。

假设我们创建了私钥和公共证书。让我们使用它们,确保 ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

软件架构师速成指南

软件架构师速成指南

Gregor Hohpe
企业级Java开发中的应用人工智能 (Chinese Edition)

企业级Java开发中的应用人工智能 (Chinese Edition)

Alex Soto Bueno, Markus Eisele, Natale Vinto
高性能MySQL:第4版

高性能MySQL:第4版

Silvia Botros, Jeremy Tinley

Publisher Resources

ISBN: 9798341658004