为什么不安全的gRPC服务器仍然允许来自安全客户端的连接?



我似乎不明白幕后发生了什么,但如果有任何指导,我将非常感激。

我有以下grpc服务器是托管在谷歌云运行:

server.js

server.bindAsync(`0.0.0.0:${process.env.PORT}`, grpc.ServerCredentials.createInsecure(), () => { //Notice, this is insecure
server.start();
console.log('GRPC Service Started');
});

然后我得到了一个服务url的形式:https://test-service-abcdefghij-ue.a.run.app

然后下面是使用以下代码连接到上述服务器的客户端:

client.js

... new test_proto.TestAccount("test-service-abcdefghij-ue.a.run.app", grpc.credentials.createSsl()); //Notice I used createSsl instead of createInsecure()

您可以从我的客户端代码中看到,我使用createSsl而没有传递自签名证书,但是到createInsecure服务器的连接正常。

我一直认为服务器和客户端必须提供相同的自签名证书。

那么,为什么即使服务器配置为不安全,这仍然有效?这是否意味着无论如何数据仍将以纯文本形式传输?

根据@John Hanley的回复,Cloud Run不支持客户端SSL证书。客户端验证服务器的SSL证书。如果客户端使用HTTP(不安全)连接到Cloud Run服务,Cloud Run会将客户端重定向到HTTPS端点。这意味着最后的连接是用对称加密加密的。然而,加密本身并不意味着连接是安全的。Google Cloud Run还支持IAP来授权用户访问。换句话说,安全连接需要加密和授权。你可以看一下文档

相关内容

  • 没有找到相关文章

最新更新