Пружинные загрузочные микро сервисы включают Https при запуске внутри контейнера докера - PullRequest
0 голосов
/ 02 мая 2018

У меня есть некоторые весенние загрузочные микро сервисы, и я включил 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
...

Когда я попытался запустить их в контейнере Docker (используя сеть = хост), сервер конфигурации успешно запускается, и я могу получить доступ к файлам свойств через браузер (https://localhost:8888/discovery/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

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

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

1 Ответ

0 голосов
/ 04 мая 2018

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

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

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...