2016-08-07 137 views
0

我正在嘗試找出管理EB Docker應用程序的HTTPS的最佳方法。AWS Elastic Beanstalk VPC - 從ELB到HTTPS實例

此刻我正在使用以下方法。

  1. ELB接受443上的HTTPS連接,並轉發到實例上的HTTP端口80。
  2. ELB接受80上的HTTP連接,並轉發到實例上的HTTP端口8080。
  3. 實例接受端口80上的HTTP連接並轉發到docker應用程序。
  4. 實例接受端口8080上的HTTP連接並將它們重定向到HTTPS。

這一切都工作得很好。這意味着碼頭應用程序根本不必擔心重定向。它只是監聽端口80,並且它是事情。剩下的就是ELB和碼頭主持人。

我只關心這個設置,是碼頭應用程序不知道它運行的安全。如果在我的應用程序中檢查這個,它會失敗。

我想完全將我的docker應用程序與域名以及可能更改的SSL證書分開,因此我寧願繼續終止ELB上的原始HTTPS連接。我想知道是否有某種方法可以讓Docker主機(或ELB)在HTTPS協議中轉發(重新加密)請求,但是使用自簽名證書,因此我可以保留它的完全通用性。

要清楚的是,這隻會在ELB和/或碼頭主機,我的碼頭應用程序之間,而不是瀏覽器。

如果我創建了一個不過期的自簽名證書,然後在Docker應用程序(當前使用Apache2,但可能使用nginx)中將其註冊到Web服務器,然後簡單地告訴ELB或docker主持人轉發請求作爲HTTPS,這將工作?還是會因爲證書不可信而在某個時刻崩潰?

或者是否有某種方法可以在docker應用程序的web-server上終止HTTPS連接,而不需要預先生成證書(我猜這不是,因爲它可能需要生成即時證書等)。

是否有推薦的最佳實踐方式來做這種事情?

回答

0

當負載平衡器終止客戶端連接並轉發到後端時,常見解決方案是負載平衡器將頭添加到後端請求上,以填充通過使負載平衡器在那裏被剝離的任何信息。

ELB has a page on this並使用以下標頭:

  • X-Forwarded-For - 客戶端IP
  • X-Forwarded-Proto - 該方案/協議
  • X-Forwarded-Port - 的輸入端口。

您通常不會直接從客戶端獲得這些標頭,除非它們是可信的客戶端。我認爲ELB爲你照顧。