CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
gRPC 入门/课时/TLS 与安全
RawBlame
课时目录12 节

gRPC 入门

  1. 01gRPC 是什么
  2. 02Protocol Buffers
  3. 03代码生成
  4. 04Java 服务端
  5. 05Java 客户端
  6. 06流式 RPC
  7. 07Spring gRPC 集成
  8. 08状态与错误
  9. 09gRPC-Gateway
  10. 10gRPC vs REST
  11. 11TLS 与安全
  12. 12综合练习

TLS 与安全

mTLS 概念、内网服务间调用。

25 分钟

TLS 与安全

gRPC 生产环境应启用 TLS;服务间零信任场景用 mTLS(双向证书)。Lab 可用 usePlaintext(),禁止 带入生产或公网。

学习目标

  • 理解 Channel 加密与服务端凭据配置
  • 知道 mTLS 在微服务网格中的角色
  • 明确 /tracks REST 与 gRPC lab 的安全边界差异

核心内容

TLS 基础(Java Server)

Server server = ServerBuilder.forPort(9090)
    .useTransportSecurity(certChainFile, privateKeyFile)
    .addService(trackGrpcService)
    .build();

Client:

ManagedChannel channel = Grpc.newChannelBuilderForAddress(
        "track-service.internal", 9090,
        TlsChannelCredentials.create())
    .build();

凭据来自 K8s Secret 或 spring-cloud-essentials 配置中心——与 REST HTTPS 证书管理类似。

mTLS 概念

模式谁验证谁
TLS客户端验证服务端证书
mTLS双方互相验证证书

Service mesh(Istio/Linkerd)常自动注入 sidecar 处理 mTLS;应用层 gRPC 可专注业务 Status。

与 REST 安全对照

本站 REST 使用 Spring Security + JWT(spring-boot-essentials):

GET /tracks  → 可选 JWT、CORS、Rate limit
gRPC lab     → TLS/mTLS + Metadata token(实验)

gRPC Metadata 可承载 authorization Bearer,等价 HTTP Header。公开课程读接口仍 REST——WAF、CDN 对 JSON GET 更成熟。

Lab 禁区

.usePlaintext()  // 仅 localhost lab-grpc
  • 勿在公网 IP 暴露 9090 plaintext
  • 勿与 graphql-essentials 实验混用未授权 Admin 端口

生产:内网 gRPC + mTLS;外网仅 REST /tracks 或 API Gateway。

练习

  • 列出 lab 与生产各 3 条安全检查项
  • 阅读 Spring Security 过滤器链,对比 gRPC ServerInterceptor
  • 说明为何浏览器不直接 mTLS 调 gRPC

小结

gRPC 安全 = TLS/mTLS + Metadata 鉴权;公网交付仍 REST /tracks。 下一课综合练习。

加载本节练习…
← 上一课gRPC vs REST下一课 →综合练习