Остаточный вызов https из потока данных GCP (Apache Beam/Java SDK) с пользовательским сертификатом .crt

Мы столкнулись с проблемой вызовов REST из потока данных GCP (на основе Apache Beam/Java SDK) в нашу внутреннюю службу в GCP с настраиваемым самозаверяющим сертификатом.

Мы попытались поместить сертификат во время выполнения в файл ../java/../cacerts, и он работает хорошо, но Java читает ../cacert во время запуска, и мы вынуждены переопределить SSlContext и X509TrustManager, поместить его в HttpClient и перезагрузить файл cacert. в среде выполнения перед вызовом http и после загрузки пользовательского сертификата (следуйте этому примеру).

С моей точки зрения, это выглядит довольно сложной реализацией.

Итак, вопрос: есть ли у этой проблемы какой-либо простой обходной путь, такой как запуск сценария .sh до запуска GCP Dataflow Worker и обновление файла cacert через cli до запуска JVM.

Мы также запускаем поток данных через gcloud cli, поэтому мы не можем просто добавить собственный cacert в проект и указать на него JVM через параметры Java.

Спасибо за любые предложения!

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
87
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Мы сделали что-то похожее для аутентификации в сервисах, использующих самозаверяющие сертификаты.

Вы всегда можете использовать кастомные контейнеры для своих воркеров и скопировать сертификат в cacerts в dockerfile? Таким образом, рабочий всегда будет иметь сертификат в cacerts. (Пользовательские контейнеры поддерживаются только для конвейеров, использующих Dataflow Runner v2)

Спасибо за предоставленные ссылки на вашу реализацию, моя была слишком сложной, поэтому она очень полезна! Что касается опции Docker, мы также рассмотрим ее, звучит неплохо.

omelnykov 07.11.2022 12:42

Другие вопросы по теме