GRPC CreateChannel() 错误无法获取默认的 pem 根证书
GRPC CreateChannel() error Could not get default pem root certs
我在 Windows 10 上使用 grpc 1.35.0 并按照示例代码 here 创建一个 grpc 通道供客户端使用。但是我提供了一个根证书来创建频道,否则它会抱怨以下错误。
然后我用 python 版本编写我的客户端,我可以在不提供根证书的情况下创建频道。
那么,这是 grpc 的错误还是我误解了示例代码?
GRPC 示例代码
// Create a default SSL ChannelCredentials object.
auto channel_creds = grpc::SslCredentials(grpc::SslCredentialsOptions());
// Create a channel using the credentials created in the previous step.
auto channel = grpc::CreateChannel(server_name, channel_creds);
// Create a stub on the channel.
std::unique_ptr<Greeter::Stub> stub(Greeter::NewStub(channel));
// Make actual RPC calls on the stub.
grpc::Status s = stub->sayHello(&context, *request, response);
我的代码
const std::string SECURE_GRPC_CHANNEL_ADDRESS = <MY_SERVER>;
class GrpcChannel
{
GrpcChannel()
{
auto ca_cert = get_file_contents(cacert_path);
SslCredentialsOptions options = { ca_cert, "", "" };
auto channel_creds = SslCredentials(options);
channel_ = grpc::CreateChannel(SECURE_GRPC_CHANNEL_ADDRESS, channel_creds);
}
原来是 grpc 文档问题,windows 的 grpc-core C++ 不支持默认根证书,需要用户指定一个。请参考here.
我在 Windows 10 上使用 grpc 1.35.0 并按照示例代码 here 创建一个 grpc 通道供客户端使用。但是我提供了一个根证书来创建频道,否则它会抱怨以下错误。
然后我用 python 版本编写我的客户端,我可以在不提供根证书的情况下创建频道。
那么,这是 grpc 的错误还是我误解了示例代码?
GRPC 示例代码
// Create a default SSL ChannelCredentials object.
auto channel_creds = grpc::SslCredentials(grpc::SslCredentialsOptions());
// Create a channel using the credentials created in the previous step.
auto channel = grpc::CreateChannel(server_name, channel_creds);
// Create a stub on the channel.
std::unique_ptr<Greeter::Stub> stub(Greeter::NewStub(channel));
// Make actual RPC calls on the stub.
grpc::Status s = stub->sayHello(&context, *request, response);
我的代码
const std::string SECURE_GRPC_CHANNEL_ADDRESS = <MY_SERVER>;
class GrpcChannel
{
GrpcChannel()
{
auto ca_cert = get_file_contents(cacert_path);
SslCredentialsOptions options = { ca_cert, "", "" };
auto channel_creds = SslCredentials(options);
channel_ = grpc::CreateChannel(SECURE_GRPC_CHANNEL_ADDRESS, channel_creds);
}
原来是 grpc 文档问题,windows 的 grpc-core C++ 不支持默认根证书,需要用户指定一个。请参考here.