Отключение проверки сертификата в gRPC TLS - PullRequest
0 голосов
/ 27 сентября 2018

В настоящее время у меня есть сервер ngnix (на порте 5001), за которым работает сервер gRPC, при этом в nginx включен TLS.Все клиенты gRPC должны отправить запрос на порт nginx, который переадресует работающему серверу gRPC.Изначально для тестирования был запрос gRPC с использованием usePlaintext (), и все работало нормально, но конечной целью является использование TLS.Требование здесь (поскольку это внутренние приложения), запрос канала gRPC не должен проходить сертификат, а должен пропускать сертификат при создании канала.После поиска в Google я нашел примеры по TLS, но все они принимают файл .cert, .key.Ниже приведен фрагмент, который я попробовал, и он не прошел проверку на стороне сервера. Не удалось проверить сертификат.

 (java code)              
ManagedChannel channel = NettyChannelBuilder.forAddress(<server IP address>, 5001).sslContext(GrpcSslContexts.forClient().trustManager
                                (new File(<.cert file>).build())
                        .build();

Проводя дополнительные исследования, я вижу, что у Голанга есть InsecureSkipVerify (), с помощью которого я могу пропустить проверку ceritifcate (пожалуйста, правильно).меня, если я ошибаюсь)

tc := credentials.NewTLS(&tls.Config{
                InsecureSkipVerify: true,
            })

Теперь, как мне сделать то же самое в Java?

1 Ответ

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

TLS с отключенной проверкой сертификатов имеет сомнительную полезность, поскольку он может быть тривиально MITMed и поэтому не «поддерживается» gRPC.Я весьма рекомендую предоставить клиенту надлежащие корневые сертификаты для проверки сервера.

Тем не менее, вы можете обойти API gRPC, чтобы сделать это, передав Netty InsecureTrustManagerFactory* 1007.* до SslContextBuilder.trustManager(TrustManagerFactory):

NettyChannelBuilder.forAddress("<server IP address>", 5001)
    .sslContext(GrpcSslContexts.forClient()
      .trustManager(InsecureTrustManagerFactory.INSTANCE)
      .build())
    .build();
...