【问题标题】:How to secure Spring Cloud Gateway with SSL certificate using Aws ELB如何使用 Aws ELB 使用 SSL 证书保护 Spring Cloud Gateway
【发布时间】:2023-03-10 20:35:02
【问题描述】:

目前,我有一个 ec2 实例用作开发/测试服务器,运行多个微服务。

在这些服务前面,我有一个 Spring 云网关,将流量路由到不同的服务。

在 ec2 实例前面,我有一个使用 AWS 配置的应用程序负载均衡器 (ELB),并附加了一个由 AWS Certificate Manager(托管在 go daddy 中的域)提供的证书。

如果 lb 上没有设置 HTTPS,这一切都很好,并且可以完美运行,但是一旦我在 lb 上切换到 HTTPS,我只会得到

502 Bad Gateway

在网关日志中,我得到以下异常:

decoding failed: DefaultFullHttpRequest(decodeResult: failure(java.lang.IllegalArgumentException: text is empty (possibly HTTP/0.9)), version: HTTP/1.0, content: UnpooledByteBufAllocator$InstrumentedUnpooledUnsafeHeapByteBuf(ridx: 0, widx: 0, cap: 0))
GET /bad-request HTTP/1.0 :

经过一番搜索,我发现您必须使用以下命令显式启用 SSL:

server:
  ssl:
    enabled: true

但是一旦我这样做了,似乎它需要其余的细节,因为我得到了以下信息。

org.springframework.boot.web.server.WebServerException: Could not load key store 'null'

据我了解,您必须将证书上传到 jvm 证书存储中,但据我所知,您无法导出 AWS Cert Manager 提供的证书。

我之前为 dot-net-core 环境做了完全相同的事情并且没有任何问题(可能是因为它就像在同一个 docker 映像中运行它的 Web 服务器一样)我不确定如何在 Java 中继续。可能是我的方法不对,这个架构行不通。

请协助指出我的问题,或在我用尽所有选项时提出解决方案

【问题讨论】:

    标签: java amazon-web-services spring-boot amazon-elastic-beanstalk spring-cloud-gateway


    【解决方案1】:

    如果您使用的是 ALB,那么您将您的 SSL 证书从 ACM 部署到 ALB 本身。您的 spring 应用程序与此无关。在 ALB 上设置 SSL 证书的过程在:

    【讨论】:

    • 谢谢,您为我指明了正确的方向。对Alb的请求只需要https,从Alb的监听请求应该是正常的http。无需更改代码
    • @TerblancheDaniel 没问题。很高兴它成功了。
    猜你喜欢
    • 2022-12-11
    • 2021-11-04
    • 1970-01-01
    • 2018-02-15
    • 2016-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-10
    相关资源
    最近更新 更多