Über die Konsole ist es derzeit nicht möglich, Ihr Zertifikat, das Sie im Zertifikatsmanager erstellt haben, Ihrer Beanstalk-Umgebung zuzuweisen.
Um dies zu erreichen, müssen Sie die AWS CLI verwenden. Ich konnte das schaffen, und zum Glück ist es einfach.
Kurz gesagt, müssen Sie: es in Ihrem Web-Root irgendwo
- eine elb-acm.json-Datei erstellen und platzieren. Ich lege meinen Geist direkt in den Webstamm meiner Anwendung.
- zum Zertifikat-Manager gehen und die arn ID Ihres Zertifikats
- den
update environment
Befehl erhalten Sie Ihr Zertifikat an Ihre Umgebung
aws elasticbeanstalk update-environment --environment-name Your-Environment --option-settings file://PATH-TO-JSON/elb-acm.json
Für mich ist der Weg einfach anzuwenden war file://elb-ecm.json
da (Ich glaube der Grund ist, weil) Ich habe den Befehl ausgeführt, während im Webstamm und die Datei in demselben Verzeichnis war This article goes into detail (und arbeitete für mich). Viel Glück!
Bitte beachten Sie, dass Sie das Zertifikat NICHT direkt über die Load-Balancer-Konsole (EC2> Load Balancer) zuweisen sollten, da der Load Balancer bei jeder Neuerstellung Ihrer Beanstalk-Umgebung weggeblasen und neu erstellt wird.
Stellen Sie außerdem sicher, dass Sie Ihr Zertifikat wie gewünscht eingerichtet haben, bevor Sie es auf Ihre Beanstalk-Umgebung anwenden. Wenn Sie zum Beispiel * .mydomain.com und die nackte mydomain.com beide sicher haben möchten, stellen Sie sicher, dass diese zuerst vollständig konfiguriert ist, da es keine einfache Möglichkeit gibt, Ihr Zertifikat von Ihrer Umgebung zu trennen, sobald Sie diese Befehle ausgeführt haben (Sie müssten Ihre Umgebung grundsätzlich beenden und eine neue erstellen, wenn ich mich in diesem Szenario nicht täusche).
Sie möchten auch einen Umleitungscode in Ihrer App haben, um eine 301-Weiterleitung bei einer unsicheren Anfrage durchzuführen, sobald Sie Ihr Zertifikat eingerichtet haben.Um die Weiterleitung durchzuführen, müssen Sie in der eingehenden Anfrage nach dem Header X-Forwarded-Proto
suchen. Wenn es nicht sicher ist, sollten Sie zum sicheren Port umleiten. Zum Beispiel, hier ist, wie mein Anwendungscode aussieht:
// in production, only allow secure requests (https)
public function performSecureRedirect(rc) {
// based on domain comparison
var isLive = myEnvironmentData.isLive;
// setting up the health check url is important for smooth beanstalk deployments
// beanstalk issues this healthcheck request via a non-secure port
var isAmazonHealthcheckUrl = rc.event eq "system.healthcheck";
if (isLive and not isAmazonHealthcheckUrl) {
var headerData = getHTTPRequestData().headers;
// x-forwarded-proto is a special header
// setup by Amazon ELB (Elastic Load Balancer)
var requestProtocol = getHttpRequestData().headers['x-forwarded-proto'];
var isSecureRequest = requestProtocol eq "https";
if (not isSecureRequest) {
location("https://" & cgi.server_name & cgi.path_info, false, 301);
}
}
}
Tx dafür. In Bezug auf aws cli - reden wir über den 'awsebcli' oder nur den 'aws' cli? Ich werde das Verfahren bald überprüfen. Inzwischen habe ich es tatsächlich geschafft, dies durch Änderung von EC2> Load Balancer so gut einzustellen, dass Sie erwähnt haben, dass dies bei Upgrades ersetzt werden würde. – drorsun
Ziemlich sicher, es ist der wichtigste 'aws' CLI. Dieser Artikel, den ich mit Anand Capur verlinkt habe, ist ziemlich gut. –