Мы столкнулись с проблемой вызовов 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.
Спасибо за любые предложения!




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