我正在用 Golang 编写一个 mTLS gRPC 服务器。对等点可以通过其证书的通用名称来唯一标识。我的问题是如何在 gRPC 消息接口的实现中访问客户端证书、客户端证书主题或客户端证书公用名?
这是更多上下文:
假设只有一个服务NameService
和一个方法被调用Add
。所以我的.proto文件将包含以下内容(使用 proto3 语法):
service NameService {
rpc Add(Name) returns (Empty) {}
}
message Name {
string name = 1;
}
message Empty {
}
然后我必须在 go 中实现以下接口:
type NameServiceServer interface {
Add(context.Context, *Name) (*Empty, error)
}
在方法的实现中Add
,我想阅读对等证书。我该怎么做?
PS我刚刚开始使用Golang,如果有一个我错过的明显答案,我深表歉意。提前致谢!