java - 在 SSL 套接字后面的 Jhipster 中设置 Feign

标签 java ssl jhipster spring-cloud-feign

我已经在 J​​Hipster 中设置了网关微服务配置,但我似乎无法使用 FeignClient 使微服务与网关通信

一切正常,直到我开始关注 这些说明 https://www.jhipster.tech/production/#https-support为网关使用 https 服务器。

微服务看起来像这样:

@RestController
@RequestMapping("/api")
public class MicroserviceResource {
    private final GatewayFeignClientProxy feignClient;

    public MicroserviceResource(GatewayFeignClientProxy feignClient) {
        this.feignClient = feignClient;
    }
    @GetMapping("/test-microservice")
    public ResponseEntity<String> testMicroservice() {
        String response = feignClient.testGateway().getBody();
        return ResponseEntity.ok(" Gateway returned " + response);
    }
}

使用假客户端代理:

@FeignClient(name="g", path="/api")
public interface GatewayFeignClientProxy {
    @GetMapping("/test-gateway")
    public ResponseEntity<String> testGateway();
}

网关看起来像这样:

@RestController
@RequestMapping("/api")
public class MyResource {
    @GetMapping("/test-gateway")
    public ResponseEntity<String> testGateway() {
        return ResponseEntity.ok("OK");
    }
}

在我之前的最后一次提交中,我得到了“Gateway returned OK”。但是当我使用 letsencrypt 将网关切换到 https 时,我得到了这个异常:

com.netflix.hystrix.exception.HystrixRuntimeException: GatewayFeignClientProxy#testGateway() failed and no fallback available.
        at com.netflix.hystrix.AbstractCommand$22.call(AbstractCommand.java:822)
        at com.netflix.hystrix.AbstractCommand$22.call(AbstractCommand.java:807)
        at rx.internal.operators.OperatorOnErrorResumeNextViaFunction$4.onError(OperatorOnErrorResumeNextViaFunction.java:140)
        at rx.internal.operators.OnSubscribeDoOnEach$DoOnEachSubscriber.onError(OnSubscribeDoOnEach.java:87)
        at rx.internal.operators.OnSubscribeDoOnEach$DoOnEachSubscriber.onError(OnSubscribeDoOnEach.java:87)
        at com.netflix.hystrix.AbstractCommand$DeprecatedOnFallbackHookApplication$1.onError(AbstractCommand.java:1472)
        at com.netflix.hystrix.AbstractCommand$FallbackHookApplication$1.onError(AbstractCommand.java:1397)
...
Caused by: feign.RetryableException: No subject alternative names matching IP address 172.18.0.10 found executing GET http://g/api/test-gateway
        at feign.FeignException.errorExecuting(FeignException.java:84)
        at feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:113)
        at feign.SynchronousMethodHandler.invoke(SynchronousMethodHandler.java:78)
        at feign.hystrix.HystrixInvocationHandler$1.run(HystrixInvocationHandler.java:106)
        at com.netflix.hystrix.HystrixCommand$2.call(HystrixCommand.java:302)
        at com.netflix.hystrix.HystrixCommand$2.call(HystrixCommand.java:298)
        at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:46)
        ... 167 common frames omitted
Caused by: javax.net.ssl.SSLHandshakeException: No subject alternative names matching IP address 172.18.0.10 found
        at java.base/sun.security.ssl.Alert.createSSLException(Unknown Source)
        at java.base/sun.security.ssl.TransportContext.fatal(Unknown Source)
        at java.base/sun.security.ssl.TransportContext.fatal(Unknown Source)
        at java.base/sun.security.ssl.TransportContext.fatal(Unknown Source)
        at java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.checkServerCerts(Unknown Source)
        at java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.onCertificate(Unknown Source)
        at java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.consume(Unknown Source)
        at java.base/sun.security.ssl.SSLHandshake.consume(Unknown Source)

更多信息,可能有用: 我正在使用 docker 运行它,网关和微服务都在它们自己的容器中。

最佳答案

有消息:

Caused by: feign.RetryableException: No subject alternative names matching IP address 172.18.0.10 found executing GET http://g/api/test-gateway
        at feign.FeignException.errorExecuting(FeignException.java:84)

你确定,你的主机是正确的:

http://g/api/test-gateway

其实,按照这个:

In my before-last commit, I got " Gateway returned OK".
But when I switched the gateway to https using letsencrypt, I get this exception:

还有这个:

http://g/api/test-gateway

您没有将您的配置切换为使用 https(或类似的东西 - 您在端口 80 上使用 https,您没有公开端口 80,您只公开 443 等等)。

关于java - 在 SSL 套接字后面的 Jhipster 中设置 Feign,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57115303/

相关文章:

java - 抢强标签Jsoup后的号码

java - 如何在一个 Eclipse 项目中为另一个 Eclipse 项目中的类编写测试?

java - 如果我想与 spring Rest shell 连接,我应该在 jhipster 应用程序中使用哪种类型的身份验证?

java - 将来自不同类层次结构路由的两个字段用于 map-filter lambda 表达式

java - 线程安全警告

ssl - 在 Apache2 上启用前向保密/ECDHE_RSA

php - 使用 CURL (php) 读取 SSL 页面

ssl - 启用 SSL 会出现问题

html - ngbDatepicker : Differentiate between invalid date format and out of range(minDate/maxDate) value for user feedback

java - 如何避免 https spring 安全单元测试的 302 响应?