Ошибка SSL ERR_CERT_AUTHORITY_INVALID при использовании прокси-сервера Envoy перед службой gRPC

#ssl #kubernetes #grpc #google-kubernetes-engine #envoyproxy

#ssl #kubernetes #grpc #google-kubernetes-engine #envoyproxy

Вопрос:

Я разработал службу gRPC, которая развернута в кластере Kubernetes, и для подключения к ней я использую grpc-web от клиентов nodejs. Это означает, что мне нужен прокси-сервер перед службой. Все отлично работает с этой конфигурацией envoy без SSL, но теперь мне нужно защитить соединения, чтобы подготовить его к работе.

Вот шаги, которые я прошел

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
  

Мне очень сложно отлаживать это, поскольку я не уверен, где именно может возникнуть ошибка. Любая помощь будет оценена!

Ответ №1:

Я использую GKE и только что нашел эту ссылку, которая показывает, как использовать SSL-сертификат, управляемый Google.

Для меня это работает отлично! Извините, я не смог точно решить эту проблему, но это более простая альтернатива, поскольку они также обрабатывают автоматизацию для сертификатов.