Я использую весенний облачный сервер конфигурации в кластере 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