Как настроить соединение клиента gRPC по транспортному уровню TLS без сертификата сервера? - PullRequest
0 голосов
/ 25 сентября 2018

В настоящее время я хочу представить метод gRPC как открытый API и защищенный Auth0 (токен JWT), а Istio (Envoy Proxy) поможет проверить токен на стороне сервера.Поскольку токен JWT не шифруется стандартом (он используется только для уровня аутентификации и авторизации конечного пользователя), я хочу зашифровать связь с использованием TLS.Кроме того, мой общедоступный сервер уже имеет действующий сертификат.

Проблема на стороне клиента gRPC.В каждом примере, который я смотрю, клиент gRPC должен инициализировать соединение TLS с файлом сертификата сервера.Это действительно необходимо?Поскольку это увеличивает операционную нагрузку и усложняет задачу, при которой мы должны распространять наш файл pem сервера каждый раз, когда мы обновляем сертификат И / ИЛИ клиентская сторона должна перезапустить приложение.

Спасибо, Agung

Ответы [ 2 ]

0 голосов
/ 25 января 2019

Если вы используете самозаверяющий сертификат, вам нужно указать корневые сертификаты сервера в элементе pem_root_certs структуры SslCredentialsOptions, передаваемой при создании канала, как говорит Карл.

Однакоесли вы используете сертификат, выданный центром сертификации, оставление пустым элемента pem_root_certs приведет к тому, что gRPC будет по умолчанию установлен свой собственный главный список ( для просмотра в сети ), , а не ОСконкретный список .

0 голосов
/ 26 сентября 2018

Если вы используете самозаверяющий сертификат, то да, вы должны явно доверять ему в своем клиенте.Если вы используете публично подписанный сертификат на вашем сервере, gRPC будет использовать центры сертификации операционной системы для проверки сертификата.(В случае Java он использует полномочия сертификатов JVM.)

...