Микросервисы Spring загрузки включают Https при работе внутри контейнера докеров

У меня есть несколько микросервисов весенней загрузки, и я включил https.

В основном у меня есть служба конфигурации, служба обнаружения и служба приложений. Служба конфигурации содержит файлы свойств для обнаружения и службы приложений. Когда служба обнаружения и приложений запускается, они загружают свои свойства с сервера конфигурации. Каждая служба содержит каждый собственный файл хранилища ключей с самоподписанным сертификатом. На локальном компьютере они работают правильно, и я могу получить к ним доступ через https. Вот что у меня есть:

config_srvc:

security:
  require-ssl: true
server:
  port: 8888
  ssl:
    enabled: true 
    key-store-type: PKCS12
    key-store: classpath:keystore-config-devel.p12
    key-alias: config-devel
    key-store-password: password
    key-password: password
    ...

discovery_srvc:

eureka:
      instance:
        hostname: localhost 
    server:
      ssl:
        key-store-type: PKCS12
        key-store: classpath:keystore-discovery-devel.p12
        key-alias: discovery-devel
        key-store-password: password
        key-password: password
...

Когда я попытался запустить их внутри контейнера докеров (используя network = host), сервер конфигурации запустился успешно, и я могу получить доступ к файлам свойств через браузер (https: // локальный: 8888 / обнаружение / devel), но после попытки запустить службу обнаружения я получаю следующую ошибку:

2018-05-02 09:35:07.094  INFO 1 --- [           main] c.c.c.ConfigServicePropertySourceLocator : Fetching config from server at: https://localhost:8888
2018-05-02 09:35:07.481  WARN 1 --- [           main] c.c.c.ConfigServicePropertySourceLocator : Could not locate PropertySource: I/O error on GET request for "https://localhost:8888/discovery/devel": sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target; nested exception is javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

Есть идеи, в чем проблема с контейнером докеров?

заранее спасибо

Вы используете docker compose для запуска обоих контейнеров? Если нет, можно будет показать команды запуска докера?

Naveen Kumar 02.05.2018 12:29

Нет, я не использую docker compose. Команда выглядит следующим образом: 'docker run -d --network = host --rm -t --name config_srvc config_srvc' и 'docker run -d --network = host --rm -t --name discovery_srvc discovery_srvc'

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

Ответы 1

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

Хорошо, я нашел решение

Мне пришлось импортировать сертификат внутри контейнера докеров jre cacerts. Я сделал это, добавив в файл докеров следующее:

COPY config.crt $JAVA_HOME/jre/lib/security
RUN \
    cd $JAVA_HOME/jre/lib/security \
    && keytool -keystore cacerts -storepass changeit -noprompt -trustcacerts -importcert -alias config -file config.crt

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