首页 > 解决方案 > GRPC c ++中的相互身份验证?

问题描述

我想知道如何在 GRPC C++ 中使用相互身份验证。

我的 GRPC 客户端在嵌入式硬件上运行并具有自签名证书。

我正在创建一个用于创建安全通道的 SslCredentialsOptions 对象:

SslCredentialsOptions ssl_options

ssl_options.pem_cert_chain = /* std::string containing the test certificate pem file*/

我是否也需要传递私钥?我将无法访问私钥,因为它位于 ecc508 芯片内。

但是,当我在测试设置中传递私钥时,服务器仍然没有对客户端进行身份验证。我这样做是通过

ssl_options.pem_private_key = /* std::string containing test private key */

GRPC 简单地说failed to connect to all addresses

我使用的测试证书是由我们的 grpc 服务器中使用的 root-ca 签名的。

任何想法如何使这项工作?我认为只需传递参数即可获得直接的体验,但现在我不知道发生了什么。任何输入将不胜感激。

谢谢!

标签: c++opensslgrpcmutual-authentication

解决方案


gRPC 包装语言支持用于硬件加密私钥的 OpenSSL ENGINE。您只需要设置 ssl_option.pem_private_key = "engine:<engine_id>:<key_id>"。


推荐阅读