# gRPC的mTLS使用示例 **Repository Path**: worklz/grpc-mtls-demo ## Basic Information - **Project Name**: gRPC的mTLS使用示例 - **Description**: gRPC通过mTLS实现服务端、客服端双向认证示例demo - **Primary Language**: Go - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-09-25 - **Last Updated**: 2025-09-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # gRPC通过mTLS实现服务端、客服端双向认证的示例demo 概述:网关对外开放输出`用户详情接口`,`用户详情接口`调用`用户服务方法`,`用户服务方法`再调用`订单服务方法` ## 前提:安装cfssl 和 cfssljson 工具 详见:note\go\微服务\102、gRPC通过mTLS实现服务端、客服端双向认证(cfssl、cfssljson安装).md ## 目录结构 ``` grpc-mtls-demo/ ├─ cert/ # 公共证书相关文件 │ ├─ ca-config.json # CA给其他服务生成证书的配置文件,定义CA在签署证书时所遵循的规范和约束,如证书有效期、密钥用途限制、签名算法等。 │ ├─ ca-csr.json # CA根证书签名请求的配置文件,定义生成证书的核心信息。为哪个服务器生成证书、证书包含哪些标识信息、使用什么密钥算法等。 │ ├─ ca.pem # CA根证书公钥(命令make cert-ca 生成) │ ├─ ca-key.pem # CA根证书私钥(命令make cert-ca 生成) │ ├─ ca.csr # CA根证书签名文件(命令make cert-ca 生成) │ └─ README.md # CA证书说明 ├─ server-order/ # 订单服务 │ ├─ cert/ # 订单服务证书相关文件 │ │ ├─ server-order-csr.json # 订单服务证书签名请求的配置文件 │ │ ├─ server-order.pem # 订单服务证书私钥(命令make cert 生成) │ │ ├─ server-order-key.pem # 订单服务证书公钥(命令make cert 生成) │ │ └─ server-order.csr # 订单服务证书签名文件(命令make cert-ca 生成) │ └─ main.go # 订单服务代码 ├─ server-user/ # 用户服务 │ ├─ cert/ # 用户服务证书相关文件 │ │ ├─ server-user-csr.json # 用户服务证书签名请求的配置文件 │ │ ├─ server-user.pem # 用户服务证书私钥(命令make cert 生成) │ │ ├─ server-user-key.pem # 用户服务证书公钥(命令make cert 生成) │ │ └─ server-user.csr # 用户服务证书签名文件(命令make cert-ca 生成) │ └─ main.go # 用户服务代码 └─ gateway/ # 网关服务 ├─ cert/ # 网关服务证书相关文件 │ ├─ gateway-csr.json # 网关服务证书签名请求的配置文件 │ ├─ gateway.pem # 网关服务证书私钥(命令make cert 生成) │ ├─ gateway-key.pem # 网关服务证书公钥(命令make cert 生成) │ └─ gateway.csr # 网关服务证书签名文件(命令make cert-ca 生成) └─ main.go # 用户服务代码 ``` ## 运行 #### 第一步:生成CA根证书 ```bash cd grpc-mtls-demo make cert-ca ``` #### 第二步:生成订单服务证书,并运行订单服务 ```bash # 生成订单服务证书 cd grpc-mtls-demo/server-order make cert # 运行订单服务 go run main.go ``` #### 第三步:生成用户服务证书,并运行用户服务 ```bash # 生成用户服务证书 cd grpc-mtls-demo/server-user make cert # 运行用户服务 go run main.go ``` #### 第四步:生成网关服务证书,并运行网关服务 ```bash # 生成网关服务证书 cd grpc-mtls-demo/gateway make cert # 运行网关服务 go run main.go ``` #### 验证用户详情接口调用 ![](./验证用户详情接口调用.png)