如何使C ++客户端无需任何验证即可信任所有X.509证书(如Java)

时间:2019-05-29 17:18:29

标签: java c++ ssl grpc

什么是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。

1 个答案:

答案 0 :(得分:0)

不幸的是,gRPC C ++不支持此功能。 gRPC C ++仅具有不验证客户端证书而不验证服务器证书的选项。

您的用例似乎不足以使我们无法支持此功能。