目前,我有一個 ec2 實體,用作一種開發/測驗服務器,運行多個微服務。
在這些服務的前面,我有一個 Spring Cloud 網關,將流量路由到不同的服務。
在 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 環境做了完全相同的事情并且沒有問題(可能是因為它就像一個 web 服務器在同一個 docker 鏡像中運行它)我不確定如何在 Java 中進行。也許我的方法是錯誤的,這種架構行不通。
請協助指出我的問題,或提出解決方案,因為我已經用盡了所有選擇
uj5u.com熱心網友回復:
如果您使用 ALB,那么您可以在 ALB本身上部署來自 ACM 的 SSL 證書。您的 spring 應用程式與此無關。在 ALB 上設定 SSL 證書的程序解釋如下:
- 如何將 ACM SSL/TLS 證書與 Classic、Application 或 Network Load Balancer 相關聯?
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/381718.html
標籤:爪哇 亚马逊网络服务 弹簧靴 亚马逊弹性豆茎 春云网关
下一篇:升級到SpringBoot2.6時SpringSecurity和org.springdoc.ui.SwaggerConfig之間的回圈參考
