Подключитесь к Spring Cloud Config Server, на котором включен SSL - PullRequest
0 голосов
/ 05 октября 2018

Я использую весенний облачный сервер конфигурации в кластере ECS в AWS.Перед ним стоит конечная точка маршрута 53, доступная через порт HTTPS. Я создал тестовый клиент для подключения к серверу облачной конфигурации, и он возвращает ошибку ниже -

java.security.cert.CertificateException: Нетнайдено альтернативное DNS-имя субъекта, совпадающее с xxxxx.

Я вижу ту же ошибку при попытке подключиться к серверу конфигурации, работающему на моей локальной машине.Я включил ssl для своего локального сервера конфигурации, используя настройки ниже в bootstrap.yml

настройки сервера

server:
  port: 8443
  ssl:
    key-store: classpath:certs/qa/clientid.jks
    key-password: weblogic
    key-store-password: weblogic

настройки клиента

server.ssl.trust-store=classpath:certs/qa/cacerts
server.ssl.trust-store-password=changeit

Я пытаюсь игнорировать проверку имени, устанавливая NoopHostnameVerifier в RestTemplate.Однако, похоже, что это выполняется только после попытки установить соединение с Spring Cloud Config Server.Есть ли способ обновить ConfigServicePropertySourceLocator, прежде чем пытаться установить соединение с весенним облачным сервером конфигурации?

import org.apache.http.conn.ssl.NoopHostnameVerifier;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.cloud.config.client.ConfigServicePropertySourceLocator;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;

import javax.annotation.PostConstruct;

@Configuration
@ConditionalOnClass({ConfigServicePropertySourceLocator.class, RestTemplate.class})
public class ConfigClientBootstrapConfiguration {

    private final ConfigServicePropertySourceLocator locator;

    @Autowired
    public ConfigClientBootstrapConfiguration(ConfigServicePropertySourceLocator locator) {
        System.out.println("Setting Locator");
        this.locator = locator;
    }

    @PostConstruct
    public void init() {
        System.out.println("Setting Resttemplate");
        CloseableHttpClient httpClient = HttpClients.custom().setSSLHostnameVerifier(new NoopHostnameVerifier()).build();
        HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory();
        requestFactory.setHttpClient(httpClient);
        RestTemplate restTemplate =  new RestTemplate(requestFactory);

        locator.setRestTemplate(restTemplate);
    }

}

bootstrap.factories (в ресурсах / META-INF)

# Bootstrap components
org.springframework.cloud.bootstrap.BootstrapConfiguration=<package>.ConfigClientBootstrapConfiguration
...