使用 SSL 和路由 53 配置在 Elastic Beanstalk 上部署 Springboot 并在 CloudFront 上部署 Angular。
配置:
我在 AWS 的 Route 53 上有一個域,還從 AWS cm 創建了一個公共證書。
我在 Elastic beanstalk 上使用負載均衡器 (LB) 進行了 Spring Boot。LB 在 80 和 443 有偵聽器。443 配置了我從 aws Cert Manager 創建的 SSL。我的 LB 安全組還為 https 配置了入站規則。我已經部署了我的 jar,它在這個 URL 上提供服務:http ://waprodservice-env-1.eba-kzqan9yr.us-east-1.elasticbeanstalk.com/
我在http://waapp.s3-website.ap-south-1.amazonaws.com有帶有靜態 Web 托管的 Angular 應用程式的 s3 存盤桶。我還使用我創建的 SSL 配置了云前端(與 EB 中使用的相同)。我還在路線 53 中創建了一條 A 記錄。到目前為止一切都很好,我可以訪問我的域,并且可以從我的域名www.example.com看到我的 Angular 應用程式,并帶有證書安裝的鎖符號。
問題:
在使用 ng build --prod 構建我的 Angular 應用程式時,我已將 env-prod 檔案中的基本 url 更改為http://waprodservice-env-1.eba-kzqan9yr.us-east-1.elasticbeanstalk.com/我的彈簧靴正在上菜。當我訪問我的www.example.com(前端),在 API 呼叫之后,我收到 ERR_CERT_COMMON_NAME_INVALID 訊息作為回應。我知道我的證書公用名不匹配,我嘗試打開證書并能夠在前端和后端 URL 中看到公用名 example.com 和頒發者是 amazon.com。我不知道什么是不匹配的。當我訪問后端 EB 網址時,它在瀏覽器上顯示不安全。但是當我從 EB 訪問某個特定的公共端點時,它甚至可以從 https 鏈接獲取我需要的資料。->https://waprodservice-env-1.eba-kzqan9yr.us-east-1.elasticbeanstalk.com/public/astrologer。
僅供參考,我通過提供檔案中提到的 *.myexample.com、myexample.com 等值來創建證書。
缺少哪些配置?沒有其他 StackOverflow 帖子有幫助。嘗試了其中的大多數。
uj5u.com熱心網友回復:
您應該為與您的 ACM 證書匹配的 Elastic Beanstalk 環境設定一個自定義域名。按照您的示例,設定類似api.myexample.com
為此,您只需在 Environment Load Balancer 配置中添加一個指向默認行程的 https 偵聽器,然后將 ACM 證書附加到偵聽器(它們應該位于同一區域)
然后添加一條 A 記錄以將api.example.com路由到 Elastic Beanstalk 環境
這應該可以解決您的ERR_CERT_COMMON_NAME_INVALID問題
PS您還應該在負載均衡器中設定從埠80到443的重定向
uj5u.com熱心網友回復:
非常感謝@ARBERMEJO。
所以,這就是答案。將我的 Angular 構建上傳到 s3 后,我使用該 s3 URL 創建了一個 CloudFront,如許多 youtube 視頻中所示。然后對于后端 EB,對于配置,請檢查上面,最后一部分是,我必須在我的托管區域中為我的域創建一條 A 記錄。檢查影像。在此處輸入影像描述
我必須在我的第二行添加 api.mydomain.com(只需在記錄名稱中輸入 API)并將流量路由到影像中可以看到的負載均衡器。
神奇的部分是:您應該從您的 Angular 產品構建基礎 URL呼叫https://api.mydomain.com 。這在很多教程中都沒有提到。
如果您從前端呼叫您的 EB 鏈接,在我的例子中是https://waprodservice-env-1.eba-kzqan9yr.us-east-1.elasticbeanstalk.com/ ,它將從后端/EB 拋出 SSL 通用名稱錯誤LB(不確定是哪一個。)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/430409.html
