1

我在aws託管一個域,並希望允許https請求。我已經完成了以下步驟。aws ssl與負載均衡器 - ec2實例https請求似乎不終止ELB

  1. 要求從ACM獲得證書,驗證電子郵件併發布。
  2. 使用http和https偵聽器創建了一個傳統的負載均衡器(LB),該偵聽器通過http(80)轉發實例。
  3. 將證書附加到LB並添加運行該網站的實例。
  4. 確保連接到實例和LB的安全組在入站規則中具有http(80)和https(443)。
  5. LB和實例安全組的唯一出站規則是(所有流量 - 全部 - 全部 - 0.0.0.0/0)。

然後,我等待實例爲「inService」,並通過瀏覽到其DNS並打開它來測試LB。也http://mydomain.com打開,但當我嘗試https://mydomain.com時,我收到一條消息,指出瀏覽器無法訪問服務器。
經過一番搜索,我添加了以下2條記錄。

  1. 一個名爲「mydomain.com」和值「LB domain.com」的記錄。
  2. 名稱爲「www」且值爲「mydomain.com」的CNAME記錄。

我再次嘗試,但得到了與上述相同的結果。 最後我想到了一個答案,我應該在我的實例服務器中啓用https。

我這樣做,並瀏覽時,我得到了錯誤代碼「SSL_ERROR_RX_RECORD_TOO_LONG」「無法安全連接」。

它看起來像LB不會終止對我的域的https請求。
任何想法我做錯了!

更新:我刪除了我創建的A記錄,但是當我做了一個DNS查找時,我發現了一條指向我的彈性IP的記錄。儘管我有CNAME記錄,但DNS查詢顯示我沒有CNAME記錄。

+0

「我應該在我的實例服務器中啓用https」不正確。你是否等待DNS更改傳播?此外,爲什麼你在問題標題中提到「ssh」? –

+0

是的域名已經在沒有LB的情況下運行。在我添加LB之後,我等待實例狀態變爲「服務中」。在這之後我需要等待嗎? 我的意思是ssl我編輯它 –

+0

當您進行DNS更改時,您必須等待更改傳播。這與您的負載均衡器中的「正在服務」實例完全無關。嘗試從本地計算機運行nslookup,並驗證該域現在是否指向負載均衡器。 –

回答

0

好的,這是一個愚蠢的錯誤。在我之前工作的人在godaddy註冊了域名,並指出了在godaddy上使用A記錄的實例。所以我在route53中添加的記錄是沒有意義的。所以我在godaddy中創建了一個CNAME記錄,它解析爲ELB DNS,現在每件事情都正常。

對於那些可能陷入類似問題的人,我會嘗試寫一些建議。
首先,當您選擇添加一個負載均衡器時,那麼您的實例不應該直接被客戶端訪問。你應該將用戶重定向到ELB,ELB將完成剩下的工作。 如果您從其他地方(而不是AWS)獲得了DNS,請按照本答案中的第一段。否則,如果您在AWS中擁有適用於您的域的託管區域,請在Route53中添加A記錄。
完成此步驟後,如果https仍然無法使用。您可以檢查對您的域名的請求是否到達ELB。您可以使用負載平衡器登錄訪問cloudwatch。他們都會向您提供達到負載均衡的請求。 cloudwatch使用起來更簡單,但日誌Access爲您提供了有關請求的更多詳細信息。
如果請求沒有達到,那麼你添加的記錄還沒有傳播,或者你沒有將它們添加到正確的位置(就像我做的那樣)。
如果請求確實到達了ELB,但仍然存在問題,那麼您可能錯過了設置中的某些內容。確保你提出了問題中提到的5個步驟。這個video在這種情況下會非常有幫助。
最後,但值得一提的是,如果你使用來自ACM的證書,你沒有做你實例上運行服務器中的任何變化,使HTTPS工作,因爲在這種情況下,ELB矗立在您的實例的前它一切都適合你。當然,你可以在你的ELB和 實例之間製作ssl,但這是另一回事。

0

只有在/ var/www/html /中創建內容時,InService纔會到來。所以我建議你在那邊創建一個index.html文件,然後等待1分鐘來看InService。之後,你必須指出CNAME爲elb「地址」,在路由器53中必須使用小寫字母。但通常情況下,它不會變得可見,因此只需等待並保持刷新,直到路由器53中出現elb地址。我希望它工作。

+0

謝謝你的回答。我的問題是不同的,我回答了。 –