gpt4 book ai didi

c++ - grpc/c++ 握手器工厂创建失败,出现 TSI_INVALID_ARGUMENT

转载 作者:行者123 更新时间:2023-12-04 22:36:19 31 4
gpt4 key购买 nike

我正在从我的 grpc c++ 客户端创建一个静态库,并且我能够使用测试应用程序成功调用 grpc 静态库中的 API。
但是,当我将静态库与不同的服务集成并从该服务调用 grpc 静态库中的 API 时,它会失败并出现以下错误
握手器工厂创建失败并出现 TSI_INVALID_ARGUMENT。
无法为安全名称“xx.xx.xx.xx:xx”创建安全子 channel
在创建子 channel 期间无法创建 channel 参数。
在我复制并运行调用 grpc 客户端的测试应用程序时看到上述错误的同一 VM 上,它工作正常。
这是基于(https://www.programmersought.com/article/7290364277/)的客户端代码:

int main(int argc, char** argv) {
grpc::SslCredentialsOptions ssl_options;
ssl_options.pem_root_certs = SERVER_CRT;
// Create a default SSL ChannelCredentials object.
auto channel_creds = grpc::SslCredentials(ssl_options);
grpc::ChannelArguments cargs;
cargs.SetSslTargetNameOverride("xxx.xxx.com"); // If you add DNS, you don't need this.

// Create a channel using the credentials created in the previous step.
auto channel = grpc::CreateCustomChannel("1.2.3.4:8000", channel_creds , cargs);

// Instantiate the client.
MailClient tester(channel);

}

ssl_options.pem_root_certs = SERVER_CRT;

// The contents of server.crt
const char SERVER_CRT[] = R"(
-----BEGIN CERTIFICATE-----
TjERMA8GA1UECAwIU2hhbmdoYWkxEjAQBgNVBAcMCVNvbmdqaWFuZzEPMA0GA1UE
...
E6v50RCQgtWGmna+oy1I2UTVABdjBFnyKPEuz106mBfOhT6cg80hBHVgrV7sLHq8
76QolJm8yzZPL1qpiO4dKHHsCP6R
-----END CERTIFICATE-----
)";
我提供证书的方式可能有些问题?
为什么 grpc 客户端中的 rpc 调用可以从测试应用程序而不是其他服务中工作
在同一个虚拟机上?
任何建议表示赞赏。

最佳答案

我试图集成的应用程序使用的是 libssl 1.0.2,它不支持 TLS1.3,但 grpc 1.35 默认使用 TLS1.3 和 openssl 1.1.1。所以用 gRPC_SSL_PROVIDER=package 构建了 gRPC,它选择了 libssl 1.0.2 并解决了这个问题。希望这对任何人都有帮助。

关于c++ - grpc/c++ 握手器工厂创建失败,出现 TSI_INVALID_ARGUMENT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66965898/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com