ssl - 在 gRPC 服务前使用 Envoy 代理时出现 SSL 错误 ERR_CERT_AUTHORITY_INVALID
问题描述
我已经开发了一个部署在 Kubernetes 集群上的 gRPC 服务,并且我正在使用来自 nodejs 客户端的 grpc-web 来连接它。这意味着我需要在服务前使用代理。在没有 SSL 的情况下,这个 envoy 配置一切正常,但现在我需要保护连接以使其为生产做好准备。
这是我经历的步骤
1) 生成密钥,在使用本教程simulation.terrarium.ai
询问时输入我的域
2) 编辑 Dockerfile 以添加密钥
FROM envoyproxy/envoy:latest
COPY envoy-proxy-tls.yaml /etc/envoy.yaml
EXPOSE 9091
ADD ./certs/simulation.terrarium.ai.crt /etc/simulation.terrarium.ai.crt
ADD ./certs/simulation.terrarium.ai.key /etc/simulation.terrarium.ai.key
ADD ./certs/rootCA.crt /etc/rootCA.crt
WORKDIR /etc/envoy
CMD /usr/local/bin/envoy -c /etc/envoy.yaml
3) 更新了 envoy 配置以在端口上使用 tls
发生了什么事
我这样调用我的服务
var simService = new SimulationServiceClient(ServerAddress, null, null);
var request = new CreateSpectatorRequest();
request.setApi(API_VERSION);
request.setId(this.clientId);
var metadata = {};
var stream = simService.createSpectator(request, metadata);
stream.on("data", this.onData);
stream.on("status", this.onStatus);
stream.on("end", this.onEnd);
此时我的 grpc 服务和 envoy 代理在 kubernetes 集群中运行,与添加 TLS 之前的方式相同。当我尝试从浏览器连接时,出现此错误:
https://simulation.terrarium.ai:9091/v1.SimulationService/SubscribeSpectatorToRegion net::ERR_CERT_AUTHORITY_INVALID
我很难调试这个,因为我不确定错误可能发生在哪里。任何帮助,将不胜感激!
解决方案
我正在使用 GKE,刚刚发现这个链接显示了如何使用 Google Managed SSL Certificate。
它非常适合我!抱歉,我无法完全解决这个问题,但这是一种更简单的选择,因为他们还处理证书的自动化。
推荐阅读
- python - 如何使用 Zeep 获得多页 SOAP 响应?
- c# - 如何选择一个实体来显示
- c++ - 将指向结构数组的指针添加到 std::map
- php - 从 PHP Mailer 的标题中修剪电子邮件地址
- c++ - 如何从数组中删除 2 个连续的重复项?C++
- javascript - html5 存储未在页面重新加载时显示数据
- java - 如何去除代码异味:getSessionFactory,仅在必要时创建 SessionFactory
- c - C11 线程.h 库
- python - 如何使用其他按钮增加 QFrame.HLine 行分隔符的宽度和距离?
- c# - c# 查找鼠标相对于表单元素的位置