2017-10-08 249 views
0

我想爲我的API定製「可信CA」配置。當不使用ELB時,我可以通過在我的Web服務器中配置「ca.pem」文件來實現此目的。但是,使用ELB時,我認爲我的Web服務器不會收到原始傳入客戶端證書(而是ELB的證書)。如何自定義AWS ELB可信認證中心?

是否有可能以某種方式使我的自定義CA即使在ELB後面生效?

回答

0

您的實例不僅看不到原始客戶端的證書......它實際上並不參與與客戶端相同的TLS會話。 ELB Classic和ALB創建兩個獨立的TLS會話並將其有效載荷捆綁在一起。

要做你想做的事,ELB根本無法參與TLS。它必須全部由您的服務器完成,並且平衡器必須在第4層或更低層操作。這就排除了僅在第7層操作的應用程序負載平衡器。

有兩種解決方案。

舊的解決方案是在TCP模式下使用ELB(經典),TLS(SSL)已禁用。 ELB將有效載荷從加密連接盲目地傳遞到實例,該實例直接與瀏覽器協商TLS,並因此可以使用其CA文件來驗證瀏覽器。然而,它有點棘手,因爲默認情況下你的實例不會看到客戶端的IP地址,並且因爲ELB運行在第4層模式(更不用說處理它不理解的加密流量),它不能添加X-Forwarded-For標題...因此必須在ELB上啓用「代理協議」支持,並且您的實例必須瞭解如何從代理協議標題中提取客戶端地址。

較新的解決方案是第三種平衡器,稱爲Network Load Balancer。此服務在第3層運行,並允許您 - 實質上 - 將單個彈性IP地址映射到多個EC2實例,以平衡特定端口上的傳入請求,並進行運行狀況檢查以消除旋轉中不健康的實例。您的實例仍然負責處理所有 TLS本身,但他們將在傳入連接上看到客戶端地址。