java - Eureka RestTemplate 和 SSL

标签 java ssl resttemplate netflix-eureka

我已将我的 eureka 客户端和服务配置为使用带有自签名证书的 SSL。创建 keystore 并将证书从客户端导入服务器 keystore ,反之亦然。但是现在当我尝试使用 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 中使用 rest 服务的负载平衡 restTemplate?

我使用的是优秀的 baeldung 人网站上的文章 https://www.baeldung.com/spring-boot-https-self-signed-certificate

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

谢谢, 马克。

最佳答案

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

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

关于java - Eureka RestTemplate 和 SSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55343506/

相关文章:

django - 如何在Django中实现Https(SSL中间件)

java - 循环永远不会开始

javascript - ssl 在网站中显示错误

.htaccess - 将 HTTP 流量从 443 端口重定向到 SSL

spring - 如何在 Spring RestTemplate 请求上设置 "Accept:" header ?

java - 添加 Openfeign 依赖时出现 java.lang.IllegalStateException

Android:如何使用 RoboSpice 获取异常时返回的 JSON 对象

java - 使用静态比较器对 BSTree 进行排序

java - 如何在java中使用split创建二维数组列表?

java - 如何在 Android 上管理从后台恢复的 Xamarin 表单应用程序?