當我將AWS證書與Elastic Beanstalk應用關聯並使用https訪問域時,我收到'本網站無法到達,mydomain.com拒絕連接。 「我可以使用http訪問該網站。使用Elastic Beanstalk的AWS SSL證書:無法訪問HTTPS站點
我使用AWS的ACM創建了安全證書。我將我的域名example.com和其他名稱作爲子域添加到證書中。在我的應用程序的環境「加載平衡」部分我設置了:
我設置了SecurityGroup我的環境命名awseb-e-abc123-stack-*
如下:
有一個名爲awseb-e-abc123-stack-AWSEBLoadBalancerSecurityGroup-*
其他安全組,其中如下。它具有相同的名稱標記爲上述羣體,這是一樣的我的環境名稱:
看來,雖然,「AWSEBLoadBalancerSecurityGroup」安全組的條目不執行任何操作,如刪除所有該條目仍然允許HTTP通信工作。
在.elasticbeanstalk\securelistener.config
,我有以下
option_settings:
aws:elb:listener:443:
SSLCertificateId: <my certificate's ARN>
ListenerProtocol: HTTPS
InstancePort: 80
看來,不過,如果我在這個文件中添加一個語法錯誤,部署仍然成功。
這裏是curl -vL https://<my domain>
輸出:
* Rebuilt URL to: https://<my domain>/
* Trying <my elastic IP>...
* connect to <my elastic IP> port 443 failed: Connection refused
* Failed to connect to <my domain> port 443: Connection refused
* Closing connection 0
curl: (7) Failed to connect to <my domain> port 443: Connection refused
我使用一個單獨的域名註冊設置我的域名,並設置我的域名的DNS A記錄的IP地址,等於我的彈性IP。
[編輯]
我上面提到更改負載平衡器安全組的規則,什麼都不做。這是因爲我的EC2實例的安全組指向實例的安全組,而不是負載平衡器的安全組。當我將EC2的安全組指向負載平衡器的安全組時,安全組的規則將得到體現。我通過刪除負載平衡器安全組中的所有規則並查看沒有請求被接受來驗證這一點。但是,如果我將HTTP和HTTPS規則添加回負載平衡器安全組,但將實例安全組中的所有規則刪除,則所有HTTP請求都會通過。這不是預期的行爲,因爲負載平衡器應該將流量轉發給實例。似乎發生的情況是(1)實例和負載均衡器安全組與負載均衡器和負載均衡器沒有任何關係,(2)沒有流量進入負載均衡器。
還有什麼我失蹤?
[編輯2]
我誤解gkrizek的評論。如果我使用負載平衡器的公共DNS,則可以使用HTTP或HTTPS進行連接。我可以使用telnet連接到兩個版本。因此,我沒有創建一個將testdomain.com設置爲彈性IP的A記錄,而是爲負載平衡器創建了一個sub.testdomain.com CNAME記錄集。現在我可以瀏覽到http://sub.testdomain.com
和https://sub.testdoamin.com
。兩個問題:
- 可以在CNAME記錄中使用負載均衡器的公有DNS嗎?我無法使用* .elasticbeanstalk.com網址,因爲它可能會更改,所以我想知道這裏是否適用相同的情況。
- 如何保護
https://testdomain.com
(無子網域)。對於這種方法來說,似乎不可能有https://testdomain.com
,因爲我無法用域名創建A記錄。
你在終止HTTPS負載均衡器,並繼續與http請求?當您執行卷曲請求(如curl -vL --insecure $ url)時會發生什麼? –
默認情況下AWS不默認終止負載平衡器上的HTTPS?我如何確定是否是這種情況? – user2233706
我不確定是否有違約(如果有可能會終止)。您可以通過確保去往實例的流量未加密(即實例可以理解它正在接收的內容),或通過檢查負載均衡器將信息作爲「http」而不是「https」發送到實例來進行檢查, 。 –