Эврика RestTemplate и SSL - PullRequest
       29

Эврика RestTemplate и SSL

0 голосов
/ 25 марта 2019

Я настроил свой клиент и сервис eureka для использования SSL с самозаверяющими сертификатами. Создал хранилища ключей и импортировал сертификаты из клиента в хранилище ключей сервера и наоборот. Однако теперь, когда я пытаюсь использовать restTemplate

@Bean
RestTemplate restTemplate; 

, который использовался для разрешения моего сервиса http://my -service / convert / без каких-либо проблем с использованием базовой инфраструктуры, он больше не может это делать? HTTP-ответ - 302 с безопасным: / HTTPOnly

Я попытался настроить restTemplate немного больше вручную как таковой

@Bean
@LoadBalanced
public RestTemplate restTemplate() throws Exception {
        SSLContext sslContext = new SSLContextBuilder()
            .create()
            .loadKeyMaterial(ResourceUtils.getFile("classpath:client.jks"), allPassword.toCharArray(), allPassword.toCharArray())
            .loadTrustMaterial(ResourceUtils.getFile("classpath:client.jks"), allPassword.toCharArray())
            .build();

    HttpClient client = HttpClients.custom()
            .setSSLContext(sslContext)
            .build();

    HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(client);
    return new RestTemplate(factory);
}

и пока restTemplate работает нормально, теперь кажется, что он не знает о my-service из инфраструктуры Eureka?

Caused by: java.net.UnknownHostException: my-service

Кто-нибудь настраивал клиент / службу eureka для SSL, а также restTemplate с балансировкой нагрузки, который может использовать службу отдыха из клиентской jvm?

Я использовал статью с сайта отличного паренька https://www.baeldung.com/spring-boot-https-self-signed-certificate

однако, по-видимому, он не применяется к restTemplate, предоставляемым инфраструктурой eureka.

Спасибо, Марк.

1 Ответ

0 голосов
/ 26 марта 2019

Большое спасибо Misantorp за указание на то, что служба пыталась перенаправить в контекст / login. Похоже, что для настройки безопасности Spring достаточно было просто настроить приложение весенней загрузки для HTTP. Думал, что это было немного странно, так как раньше у меня их не было.

Я инициировал некоторую пружинную защиту, allowAll ("/ **") и отключил csrf, и клиент снова успешно вызывает сервер.

...