0

0

Linux 开发:如何用 gRPC TLS 加密通信

尊渡假赌尊渡假赌尊渡假赌

尊渡假赌尊渡假赌尊渡假赌

发布时间:2025-11-22 21:21:35

|

934人浏览过

|

来源于php中文网

原创

首先生成服务器证书和私钥,使用openssl创建自签名证书;接着在服务端通过credentials加载证书启用tls;然后客户端配置信任的ca证书以验证服务端身份;最后可选配置双向tls,实现客户端和服务端互相认证,确保通信安全。

linux 开发:如何用 grpc tls 加密通信

在 Linux 开发中,使用 gRPC 实现服务间通信时,启用 TLS 加密是保障数据安全的关键步骤。它能防止中间人攻击、窃听和篡改,尤其适用于生产环境或跨网络传输敏感数据的场景。下面介绍如何为 gRPC 服务配置 TLS 加密。

生成证书和私钥

gRPC 的 TLS 依赖 X.509 证书来建立安全连接。你需要服务器证书(server.crt)和对应的私钥(server.key),客户端会用 CA 证书验证服务器身份。

可以使用 OpenSSL 生成自签名证书用于测试:

openssl genrsa -out server.key 2048
openssl req -new -x509 -sha256 -key server.key -out server.crt -days 365

如果搭建私有 CA,还可签发更规范的证书。确保 server.crt 和 server.key 文件权限安全(如 600)。

服务端启用 TLS

以 C++ 或 Go 编写的 gRPC 服务为例,需创建 ssl_credentials 并加载证书文件。

Go 示例:

creds, err := credentials.NewServerTLSFromFile("server.crt", "server.key")
if err != nil {
  log.Fatalf("无法加载 TLS 证书: %v", err)
}
s := grpc.NewServer(grpc.Creds(creds))

C++ 示例:

std::string cert = LoadFile("server.crt");
std::string key = LoadFile("server.key");
grpc::SslServerCredentialsOptions ssl_opts;
ssl_opts.pem_key_cert_pairs.push_back({key, cert});
auto creds = grpc::SslServerCredentials(ssl_opts);
ServerBuilder builder;
builder.AddListeningPort("0.0.0.0:50051", creds);

服务启动后将只接受加密连接。

光子AI
光子AI

AI电商服饰商拍平台

下载

客户端配置信任链

客户端必须提供 CA 证书(或服务器证书)以验证服务端身份。

Go 客户端示例:

creds, err := credentials.NewClientTLSFromFile("server.crt", "localhost")
if err != nil {
  log.Fatalf("加载证书失败: %v", err)
}
conn, err := grpc.Dial("localhost:50051", grpc.WithTransportCredentials(creds))

注意第二个参数是预期的服务器主机名,用于证书域名验证。若使用 IP 或自定义域名,需确保 SAN(Subject Alternative Name)包含该地址,否则会报错。

双向 TLS(mTLS)可选配置

如需双向认证,服务端还需验证客户端证书。

服务端设置要求客户端提供证书:

ssl_opts.client_certificate_request = GRPC_SSL_REQUEST_AND_REQUIRE_CLIENT_CERTIFICATE_VERIFICATION;
ssl_opts.pem_root_certs = LoadFile("client-ca.crt");

客户端也需提供自己的证书和私钥:

creds, err := credentials.NewClientTLSFromFile("server.crt", "localhost")
// 同时设置自己的证书
tlsConfig := &tls.Config{
  Certificates: []tls.Certificate{clientCert},
  RootCAs: certPool,
}
creds.TransportCredentials.(*credentials.TLS).ConfigureTransport(&tlsConfig)

这在高安全场景中常见,比如微服务集群内部通信。

基本上就这些。只要证书路径正确、主机名匹配、权限合理,gRPC TLS 就能稳定运行。调试时可开启日志查看 handshake 错误,常见问题多出在证书格式或 SAN 不匹配。安全通信不复杂,但细节不能忽略。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

950

2023.08.02

if什么意思
if什么意思

if的意思是“如果”的条件。它是一个用于引导条件语句的关键词,用于根据特定条件的真假情况来执行不同的代码块。本专题提供if什么意思的相关文章,供大家免费阅读。

845

2023.08.22

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

1542

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

716

2023.06.29

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

300

2023.06.30

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

799

2023.07.05

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

586

2023.07.06

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

569

2023.07.20

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

1

2026.03.06

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
nginx浅谈
nginx浅谈

共15课时 | 0.9万人学习

如何进行gRPC调试
如何进行gRPC调试

共1课时 | 835人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号