Spring Cloud: включение SSL для Zuul и Eureka

Я пытаюсь включить SSL для своего приложения Spring Cloud. Сейчас он состоит из нескольких сервисов, Eureka и Zuul (No Ribbon или Feighn). Я нашел несколько подсказок, как включить SSL для Eureka, но не смог заставить его работать. На стороне Zuul я не нашел никакой информации, кроме этой: Zuul Поддержка SSL, которая фактически запрещает использование случайного порта: (server.port = 0). Мой application.yml приложения:

server:
  port: 0
  ssl:
    key-store: classpath:keystore.jks
    key-store-password: password
    key-password: password       
endpoints:
  restart:
     enabled: true
  shutdown:
     enabled: true
  health:
    sensitive: false

eureka:
  instance:
    leaseRenewalIntervalInSeconds: 10
    metadataMap:
     instanceId:      ${vcap.application.instance_id:${spring.application.name}:${spring.application.instance_id:${server.port}}}
 client:
   registryFetchIntervalSeconds: 5
  logging:
    level:
     com.netflix.discovery: 'OFF'

Сервер Eureka application.yml:

    server: 
  port: 8761
  ssl:
    key-store: classpath:keystore.jks
    key-store-password: password
    key-password: password    

eureka: 
  instance:
     hostname: localhost
     securePort: ${server.port}
     securePortEnabled: true  
     nonSecurePortEnabled: false 
     secureVirtualHostName: ${spring.application.name}
     homePageUrl: https://${eureka.instance.hostname}:${server.port}/
     statusPageUrl: https://${eureka.instance.hostname}:${server.port}/admin/info

     metadataMap:
       hostname : ${eureka.instance.hostname}
       securePort: ${server.port}

  server:
    waitTimeInMsWhenSyncEmpty: 0

  client: 
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

Я не уверен, что мне нужно добавить в Zuul application.yml, чтобы разрешить SSL, поэтому я его пропускаю.

Когда я запускаю Eureka и свое приложение, я получаю повторяющиеся исключения:

2015-07-19 12:46:42.527  INFO 7972 --- [pool-7-thread-1] o.a.http.impl.client.DefaultHttpClient   : I/O exception (org.apache.http.NoHttpResponseException) caught when processing request to {}->http://localhost:8761: The target server failed to respond
2015-07-19 12:46:42.527  INFO 7972 --- [pool-7-thread-1] o.a.http.impl.client.DefaultHttpClient   : Retrying request to {}->http://localhost:8761

Я также получаю 404 для команды curl:

curl -k -i -X ​​ПОЛУЧИТЬ https://localhost:8761/eureka

Зуул не запускается, потому что не может подключиться к Эврике.

Я почти уверен, что помещаю конфигурации в неправильные файлы application.yml (и я до сих пор не знаю, как настроить Zuul).

Мне интересно, есть ли где-нибудь документация, в которой рассказывается, как включить SSL для всех компонентов Netflix.


person MrkK    schedule 19.07.2015    source источник
comment
удалось ли вам решить эту проблему?   -  person yathirigan    schedule 31.08.2015
comment
я не вижу свойства ssl.enabled: true в ваших файлах yaml   -  person yathirigan    schedule 09.09.2015
comment
Я видел ту же ошибку (обнаруженную при обработке запроса к {} - ›localhost: 8761), всплывающее даже без проблем с SSL: stackoverflow .com / questions / 31923057 /. Я получаю несколько тысяч таких в неделю в ряде служб. Я начал смотреть на это сегодня   -  person EvilJinious1    schedule 09.09.2015
comment
Зачем тебе http://${eureka.instance.hostname}:${server.port}/eureka/. Это должно быть имя хоста сервера eureka, а не экземпляр, на котором запущен клиент eureka (каковы свойства eureka.instance.*).   -  person spencergibb    schedule 09.09.2015


Ответы (1)


когда вы включаете HTTPS для службы zuul (пограничный прокси) и eureka, нам нужно использовать это свойство на уровне службы zuul

tape.IsSecure: true

person Peraiah Karanam    schedule 14.05.2018