C++ GRPC客户端与GangangServer的连接错误 我试图编写一个GRPC服务器,它既可以与C++和Galang-Client对话。由于这都是系统内部的,因此将有一个自签名证书对服务器证书进行签名,服务器将对客户端证书进行签名

C++ GRPC客户端与GangangServer的连接错误 我试图编写一个GRPC服务器,它既可以与C++和Galang-Client对话。由于这都是系统内部的,因此将有一个自签名证书对服务器证书进行签名,服务器将对客户端证书进行签名,c++,ssl,go,grpc,C++,Ssl,Go,Grpc,我可以从golang客户端连接到服务器。但是,C++客户端没有连接,我看到SSL层的一堆错误。我在C++的GRPC客户端配置中做了什么? 我的证书目前都使用2048位RSA密钥 以下是我认为被省略的等效错误处理的客户机代码: 戈兰: 进口 加密/tls io/ioutil google.golang.org/grpc google.golang.org/grpc/credentials func getConnectionhostPort字符串*grpc.ClientConn,错误{ var c

我可以从golang客户端连接到服务器。但是,C++客户端没有连接,我看到SSL层的一堆错误。我在C++的GRPC客户端配置中做了什么?

我的证书目前都使用2048位RSA密钥

以下是我认为被省略的等效错误处理的客户机代码:

戈兰:

进口 加密/tls io/ioutil google.golang.org/grpc google.golang.org/grpc/credentials func getConnectionhostPort字符串*grpc.ClientConn,错误{ var config tls.config 证书,x509;:=tls.LoadX509KeyPairclient.crt,client.key config.Certificates=appendconfig.Certificates,cert b、 _Util:=ioutil.ReadFileroot.crt config.RootCAs.appendCertsFrompMB 选项:=grpc.WithTransportCredentialscredentials.NewTLSconfig 返回grpc.DialhostPort,选项 } C++:

包括 包括 包括 std::共享\u ptr获取\u连接Const std::字符串和主机\u端口{ 自动内容=[]常量std::string和文件名->std::string{ std::ifstream文件名; std::stringstream缓冲区;
缓冲区错误消息是由正在提交的证书在C++代码运行的系统上不可信的原因引起的。

如果您使用自签名证书,您需要将根签名密钥添加到该系统上的CA证书,或者配置C++代码来读取和识别根签名密钥。


如果您在代码中提供有关密钥的更多信息,我假设root.crt是您的根签名密钥,可能有人会给您提供更具体的帮助。

您了解golang客户端版本为什么使用我相同的自签名根证书接受连接吗?看起来go客户端的连接也有问题,您必须检查错误加载证书和ca时,两个代码中都没有检查任何可能的错误
D0322 14:42:12.882767371   11701 env_linux.c:77]             Warning: insecure environment read function 'getenv' used
getting job record
E0322 14:42:12.930157873   11701 ssl_transport_security.c:945] Handshake failed with fatal error SSL_ERROR_SSL: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed.
E0322 14:42:12.930231627   11701 handshake.c:128]            Security handshake failed: {"created":"@1490218932.930210185","description":"Handshake failed","file":"src/core/lib/security/transport/handshake.c","file_line":264,"tsi_code":10,"tsi_error":"TSI_PROTOCOL_FAILURE"}
E0322 14:42:12.964082644   11701 ssl_transport_security.c:945] Handshake failed with fatal error SSL_ERROR_SSL: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed.
E0322 14:42:12.964134746   11701 handshake.c:128]            Security handshake failed: {"created":"@1490218932.964114213","description":"Handshake failed","file":"src/core/lib/security/transport/handshake.c","file_line":264,"tsi_code":10,"tsi_error":"TSI_PROTOCOL_FAILURE"}
std::string JobServerClient::getJobRecord(const string&) const: GRPC connection error 14 []
2017/03/22 17:42:12 grpc: Server.Serve failed to create ServerTransport:  connection error: desc = "transport: EOF"
2017/03/22 17:42:12 grpc: Server.Serve failed to create ServerTransport:  connection error: desc = "transport: EOF"