如何禁用客户端 GRPC 服务器证书主机名验证?

时间:2021-07-08 16:04:45

标签: c++ ssl grpc

目前我正在为我的 gRPC 客户端设置通道身份验证,如下所示:

std::shared_ptr<grpc::ChannelCredentials> channel_creds;
auto metadata = grpc::ChannelArguments();

// ...
grpc::SslCredentialsOptions sslOpts{};
sslOpts.pem_root_certs = // PEM with the Root CA cert's public key
sslOpts.pem_cert_chain = // PEM for client cert's public key
sslOpts.pem_private_key = // PEM for client cert's private key

channel_creds = grpc::SslCredentials(sslOpts);
metadata.SetSslTargetNameOverride(mbServerCertSubjectName.second.get());

// ...
grpc::CreateCustomChannel(addr_str, channel_creds, metadata);

这几乎是完美的,但我想禁用证书名称验证:我只想接受任何链接到我提供的 pem_root_certs 的内容。

如果我可以创建一个 TlsChannelCredentialsOptions 结构并将其 grpc_tls_server_verification_option 字段设置为 GRPC_TLS_SKIP_HOSTNAME_VERIFICATION,这似乎是可以实现的,但是 TlsCredentialsOptions 的接口与 SslCredentialsOptions 完全不同,我不知道如何将其设置为基于我在此处提供给 sslOpts 的 PEM 文件进行身份验证。

如何将所需的逻辑转换为 TlsChannelCredentialsOptions?

0 个答案:

没有答案