Spring Boot Microservices Извлекает конфигурацию с сервера через Https - PullRequest
0 голосов
/ 06 сентября 2018

Мы переключаем нашу микросервисную экосистему с http на https. Я смог загрузить службу Eureka Gateway через https, подключить нашу службу настройки и зарегистрироваться через https.

Однако, когда я загружаю третий сервис, который требует конфигурации, я не могу получить сервис для загрузки настроек через https:

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.0.0.RELEASE)

2018-09-06 15:03:21.260  INFO 2800 --- [           main] c.c.c.ConfigServicePropertySourceLocator : Fetching config from server at: http://blah

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

bootstrap.yml для службы шлюза:

server:
  port: 8761
  transport: https
  ssl:
    enabled: true
    key-store: serverkeystore.p12
    key-store-password: changeit
    key-store-type: PKCS12
    key-alias: serverkey
spring:
  application:
    name: gateway
  cloud:
    config:
      enabled: false
eureka:
  client:
    register-with-eureka: false
    fetch-registry: false
    healthcheck:
      enabled: true
    service-url:
      defaultZone: https://localhost:8761/eureka
  server:
    enableSelfPreservation: false
  instance:
    hostname: localhost
    nonSecurePortEnabled: false
    securePortEnabled: true
    statusPageUrl: "https://${eureka.instance.hostname}:${server.port}/info"
    healthCheckUrl: "https://${eureka.instance.hostname}:${server.port}/health"
    homePageUrl: "https://${eureka.instance.hostname}:${server.port}/"

security:
  require-ssl: true

bootstrap.yml для службы конфигурации:

server:
  port: 8085
  transport: https
  ssl:
    enabled: true
    key-store: serverkeystore.p12
    key-store-password: changeit
    key-store-type: PKCS12
    key-alias: serverkey

spring:
  application:
    name: config
eureka:
  client:
    serviceUrl:
      defaultZone: https://localhost:8761/eureka

security:
  require-ssl: true

bootstrap.yml для третьей службы:

server:
  port: 1111
  transport: https
  ssl:
    enabled: true
    key-store: serverkeystore.p12
    key-store-password: changeit
    key-store-type: PKCS12
    key-alias: serverkey
spring:
  application:
    name: service
  cloud:
    config:
      failFast: true
      discovery:
        enabled: true
        serviceId: config
eureka:
  client:
    serviceUrl:
      defaultZone: https://localhost:8761/eureka

security:
  require-ssl: true

Если у кого-то была такая же проблема, пожалуйста, сообщите!

1 Ответ

0 голосов
/ 06 сентября 2018

В зависимости от конфигурации в вопросе вы используете свой сервер Config в https, но вы также должны зарегистрировать его в Eureka, чтобы он был обнаружен как https. В противном случае третья служба после выполнения поиска по serviceId получит URL-адрес http от Eureka, поэтому вы должны заставить свой сервер конфигурации регистрироваться как https с помощью:

eureka:
  instance:
    statusPageUrl: https://${eureka.hostname}/info
    healthCheckUrl: https://${eureka.hostname}/health
    homePageUrl: https://${eureka.hostname}/

См .: http://cloud.spring.io/spring-cloud-static/spring-cloud.html#_registering_a_secure_application

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...