Клиент Java GRPC TLS не может быть выполнен - PullRequest
0 голосов
/ 14 января 2019

Я довольно новичок в GRPC, и Java GRPC - мое намерение работать над этим. У меня есть сервер GRPC, успешно работающий за балансировщиком нагрузки посланника, защищенным с помощью сертификатов / ключей на основе X.509. Теперь я столкнулся с проблемой при создании клиента для того же.

Репозиторий Maven предполагает, что последняя доступная версия io.grpc - 1.17.1, а примеры, упомянутые на Github для GRPC, - 1.19.0-SNAPSHOT или 1.17.3-SNAPSHOT.

Я скопировал весь репозиторий и собрал / установил код в моей локальной среде разработчика, где я столкнулся с проблемой при запуске примера клиента (TLS), а также моего собственного кода.

Мой помп

<properties>
                <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
                <grpc.version>1.19.0-SNAPSHOT</grpc.version><!-- CURRENT_GRPC_VERSION -->
                <protoc.version>3.5.1-1</protoc.version>
                <netty.tcnative.version>2.0.20.Final</netty.tcnative.version>
                <!-- required for jdk9 -->
                <maven.compiler.source>1.8</maven.compiler.source>
                <maven.compiler.target>1.8</maven.compiler.target>
        </properties>

и ошибка, которую я получаю, связана с protoc-gen-grpc-java,

io.grpc:protoc-gen-grpc-java:exe:linux-x86_64:1.19.0-SNAPSHOT

Я собрал и установил GRPC-JAVA в соответствии с их git-страницей со свойством skipcodegen = true, и предполагается, что он должен локально устанавливать необходимые файлы jar в локальном репозитории maven. Похоже, что другие есть как protobuf и т. Д., Но не этот.

Затем я попытался с 1.17.1, которая является последней доступной на Maven, и мой pom

<properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <grpc.version>1.17.1</grpc.version><!-- CURRENT_GRPC_VERSION -->
        <protobuf.version>3.5.1</protobuf.version>
        <protoc.version>3.5.1-1</protoc.version>
        <netty.tcnative.version>2.0.7.Final</netty.tcnative.version>
        <!-- required for jdk9 -->
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

Здесь ошибка -

An exception occured while executing the Java class. Could not find TLS ALPN provider; no working netty-tcnative, Conscrypt, or Jetty NPN/ALPN available

Я не совсем уверен, в чем может быть проблема, и любая помощь будет действительно заметной.

* * 1 022 Дж

1 Ответ

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

Как правило, вы не должны использовать версии SNAPSHOT. В примерах не используются версии SNAPSHOT для тегов выпуска. Обратите внимание на самый последний тег выпуска при испытании примеров. Это должно решить любую проблему с отсутствующим protoc-gen-grpc-java (вызванным skipCodegen=true).

Должны быть журналы уровня INFO непосредственно перед тем, как сгенерировано исключение «Не удалось найти поставщика TLS ALPN». Существуют три важные записи журнала: «netty-tcnative недоступен (это может быть нормальным)», «Conscrypt not found (это может быть нормальным)» и «Jetty ALPN недоступен (это может быть нормальным)». Они будут иметь исключения, дополнительную информацию, которая должна прояснить проблему.

Если проблема не устранена, попробуйте запустить Google Cloud Compat Checker . Он проверяет наличие общих проблем, которые могут помешать работе ALTS.

Вы также можете обратиться к gRPC SECURITY.md для получения информации об устранении неполадок.

...