2016-04-12 136 views
0

我的網站由Firebase Hosting託管,並且我想對運行在AWS EC2實例上的NodeJS進程發出http post。SSL域名與ec2域名不匹配DNS名稱

首先失敗:EC2是http,我有混合內容(https和http)的錯誤。

接下來,我把在前期的EC2實例的負載均衡器,並安裝了我的域名證書(www.mydomain.com) 二失敗:我得到一個ERR_INSECURE_RESPONSE錯誤,因爲loadbalancer.amazonaws.com做不匹配www.mydomain.com

我很機智地解決了我認爲是一個簡單的用例。請幫忙。

+0

如果您有'api.example.com'的ssl證書,那麼您需要**在訪問安裝證書的機器時實際使用該主機名**。使用不同的主機名自然不起作用。是的,這非常簡單。 –

+0

謝謝@ Michael-sqlbot - 這有所幫助。 – Nat

回答

1

兩種選擇。

您需要向亞馬遜註冊您的域名,以便您可以在AWS Route53中創建託管區域。在那裏,您可以創建一條記錄,將「mydomain.com」指向負載均衡器。

另一種選擇是使用您當前的註冊表(GoDaddy或其他人)將您的域轉發給負載均衡器。您可能需要啓用「使用屏蔽轉發」,因此它仍然看起來像您的域,但由AWS負載平衡器提供服務。

讓我知道什麼可以(或不),我會更新這個答案。

1

您正在收到ERR_INSECURE_RESPONSE錯誤,因爲您正在使用解決loadbalancer.amazonaws.com的CNAME。由於您的證書用於www.yourdomain.com,因此它提供了有效的錯誤。 CNAME和別名的操作稍有不同。使用CNAME時,流量不是您域名的有效別名,因此如果您嘗試保護域名,則會收到錯誤。但是,當您爲www和別名創建A記錄時,loadbalancer.amazonaws.com現在任何來自www.yourdomain.com上的loadbalancer.amazonaws.com的流量都是您的域的有效流量,您將不再有這些錯誤。

爲了終止www.yourdomain.com在loadbalancer.amazonaws.com上的安全流量,您需要有一個A記錄,該記錄將在別處存在。不幸的是,ELB只提供一個DNS條目,沒有IP地址,但許多DNS提供商(即GoDaddy)將不允許你有一個DNS A記錄被別名爲DNS地址;他們需要你別名到IP地址。這使生活變得更加複雜。

有幾種方法可以實現這一點(SSL不支持URL轉發和掩碼),但最簡單的解決方案是使用Route 53.使用Route 53不需要註冊或傳輸名稱到AWS和託管區域每個域只需0.50美元/月。

要使用路由53請按照下列步驟操作:

  1. 爲yourdomain.com創建一個託管區。當您在Route 53中創建託管區域時,它將完成一些默認記錄(如A,NS和SOA記錄)。請注意NS記錄,因爲您稍後需要它們。
  2. 接下來,將您現有的區域文件條目(如MX記錄)從當前的DNS提供商複製到新的託管區域。
  3. 當涉及到一個記錄,你想引導流量到你的ELB你會輸入名稱,說www,然後就在類型選項字段下面,你會看到一個廣播選項,說:「別名:是沒有」。當您選擇是時,值字段將消失,您會看到一個選項,顯示「別名目標:輸入目標名稱」。當您點擊該字段時,您會收到一個可以替代的帳戶中的資源下拉列表。只需選擇您的負載均衡器。
  4. 點擊創建,你就完成了Route 53.
  5. 現在你所有的dns記錄都被複制過了,你將進入你的註冊商​​,並將名稱服務器更改爲Route 53爲你提供的名稱服務器。

現在Route 53正在爲您處理您的DNS。 loadbalancer.amazonaws.com是www.mydomain.com的有效別名。由於當您訪問www.yourdomain.com時,loadbalancer.amazonaws.com現在是www.yourdomain.com的有效別名,您在loadbalancer.amazonaws.com上的ELB將終止流量爲www.yourdomain.com,您的錯誤將得到解決。備註:如果您的實例位於us-east-1,您可以使用證書管理器爲ELB和域獲取無限數量的免費標準,SAN和通配符SSL證書。