首页 > 解决方案 > 尤里卡 RestTemplate 和 SSL

问题描述

我已将我的 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 正在创建好它现在似乎不知道来自 Eureka 框架的 my-service ?

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

有没有人为 SSL 配置了一个 eureka 客户端/服务,以及一个可以使用来自客户端 jvm 的休息服务的负载平衡的 restTemplate?

我正在使用来自优秀 baeldung 家伙网站的文章 https://www.baeldung.com/spring-boot-https-self-signed-certificate

但是它似乎不适用于尤里卡框架提供的restTemplate。

谢谢,马克。

标签: javasslresttemplatenetflix-eureka

解决方案


非常感谢 Misantorp 指出该服务正试图重定向到 /login 上下文。似乎只需为 HTTPs 配置 Spring Boot 应用程序就足以触发一些 Spring 安全性。觉得这有点奇怪,因为我以前没有在那里。

我启动了一些spring security, allowedAll("/**") 并禁用了csrf,客户端再次成功调用了服务器。


推荐阅读