【问题标题】:SSL error ERR_CERT_AUTHORITY_INVALID when using Envoy proxy in front of gRPC service在 gRPC 服务前使用 Envoy 代理时出现 SSL 错误 ERR_CERT_AUTHORITY_INVALID
【发布时间】:2026-01-13 20:25:01
【问题描述】:

我已经开发了一个部署在 Kubernetes 集群上的 gRPC 服务,并且我正在使用来自 nodejs 客户端的 grpc-web 来连接它。这意味着我需要在服务前使用代理。在没有 SSL 的情况下,this envoy configuration 一切正常,但现在我需要保护连接以使其为生产做好准备。

这是我经历的步骤

1) 生成密钥,当使用this tutorial 询问时输入我的域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

It's much easier to read this config file with highlighting so here is a gist of it.

发生了什么
我这样调用我的服务

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

我很难调试这个,因为我不确定错误可能发生在哪里。任何帮助将不胜感激!

【问题讨论】:

    标签: ssl kubernetes grpc google-kubernetes-engine envoyproxy


    【解决方案1】:

    我正在使用 GKE,刚刚找到显示 how to use a Google Managed SSL Certificate 的链接。

    它非常适合我!抱歉,我无法完全解决这个问题,但这是一种更简单的选择,因为他们还处理证书的自动化。

    【讨论】:

      最近更新 更多