什么是Java的InsecureTrustManagerFactory的grpc C ++等效项?
GrpcSslContexts.forClient()。trustManager(InsecureTrustManagerFactory.INSTANCE).build()
一个不安全的TrustManagerFactory,它不经过任何验证就信任所有X.509证书。
换句话说,在Java中,我创建了一个服务器(由rootCA签名的private.key + certificate.pem)和一个客户端,该客户端创建了SSL加密通道,并且该服务器接受了未经验证的服务器证书(rootCA.pem无法用于客户端)。从技术上讲,不建议使用,但我仅将其用于测试目的。我需要对服务器客户端对的C ++版本执行相同的操作。到目前为止,我的C ++客户端通过SslCredentialsOptions需要rootCA.pem:
grpc::SslCredentialsOptions sslChannelOptions;
sslChannelOptions.pem_root_certs = "rootCA.pem";
sslChannelOptions.pem_cert_chain = "";
sslChannelOptions.pem_private_key = "";
return grpc::SslCredentials( sslChannelOptions );
或通过
gpr_setenv(“ GRPC_DEFAULT_SSL_ROOTS_FILE_PATH”,“ roots.pem”)
否则我会得到:
ssl_transport_security.c:921]握手失败,出现致命错误SSL_ERROR_SSL:错误:0400006b:RSA例程:OPENSSL_internal:BLOCK_TYPE_IS_NOT_01。
答案 0 :(得分:0)
不幸的是,gRPC C ++不支持此功能。 gRPC C ++仅具有不验证客户端证书而不验证服务器证书的选项。
您的用例似乎不足以使我们无法支持此功能。