java - 如何使 C++ 客户端信任所有 X.509 证书而不进行任何验证(就像在 Java 中一样)

标签 java c++ ssl grpc

Java 的 InsecureTrustManagerFactory 的 grpc C++ 等价物是什么?

GrpcSslContexts.forClient().trustManager(InsecureTrustManagerFactory.INSTANCE).build()

一个不安全的 TrustManagerFactory,它信任所有 X.509 证书而无需任何验证。

换句话说 - 在 Java 中,我创建了一个服务器(private.key + certificate.pem 由 rootCA 签名)和一个创建 SSL 加密 channel 的客户端,服务器接受服务器的证书而无需验证(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] 握手失败,出现 fatal error SSL_ERROR_SSL:错误:0400006b:RSA 例程:OPENSSL_internal:BLOCK_TYPE_IS_NOT_01。

最佳答案

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

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

关于java - 如何使 C++ 客户端信任所有 X.509 证书而不进行任何验证(就像在 Java 中一样),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56365638/

相关文章:

java - 你如何在Java中找到数组中所有数字的总和?

java - 如何在 postgres 中将 Gson 对象存储为 Json 类型

java - 删除和收缩 ArrayList

c++ - 如何在 QTextEdit 面板中附加选择查询结果?

c++ - C++ 中的浮点错误

java - 从 .accdb 文件获取数据

c++ - 长时间保持线程锁定

ssl - 您能否以编程方式在 tcp 连接上使用 IPsec 而不是执行用户级 SSL/TLS?

apache - .htaccess - 一个特定域的 SSL redicect 条件不起作用

java - TLS 1.2 客户端问候失败