当前位置: 首页 > 知识库问答 >
问题:

AWS弹性豆茎负载均衡器在哪里寻找认证?

盖锐
2023-03-14

我正在设置AWS弹性豆茎应用程序,我希望它的流量是HTTPS。

我创建了一个与beanstalk url匹配的DNS CNAME记录,并在AWS证书管理器中为该DNS名称创建并批准了一个证书。

现在,我转到Elastic Beanstalk Environment-->Configuration-->Network Tier/Load Balancer(下图),以便将“安全侦听器端口”从OFF设置为443,并选择我的证书。

但是我的证书没有可供选择的!所以我的问题是如何将我的证书或一个证书进入那个选择列表,或者那是AWS中的一个bug?

注意-我能够在访问EC2/Load balancers时看到我的证书,并且能够将负载均衡器从HTTP更改为HTTPS,并在那里选择我的证书。但这并没有反映在弹性豆茎负载均衡器配置上,该配置仍然显示端口80。对beanstalk使用HTTPS并不是这样工作的。

救命啊!

共有1个答案

毛镜
2023-03-14

通过控制台,目前无法将在证书管理器中创建的证书分配给Beanstalk环境。

为了实现这一点,您将需要使用AWS CLI。我能够做到这一点,幸运的是,这很容易。

简而言之,您需要:

    null

此外,在将证书应用到Beanstalk环境之前,请确保您已经按照您想要的方式设置了证书。例如,如果您希望*.mydomain.com和裸露的mydomain.com都是安全的,请首先确保它已完全配置,因为一旦运行这些命令,就没有简单的方法将证书与环境“解除关联”(如果我没有弄错的话,您基本上需要完全终止您的环境并创建一个新的环境)。

此外,您还希望在应用程序中有一些重定向代码,以便在设置证书后对任何非安全请求执行301重定向。要执行重定向,您需要在传入请求上查找x-forwarded-proto标头。如果不安全,则应重定向到安全端口。例如,下面是我的应用程序代码的外观:

// 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);

        }

    }

}
 类似资料:
  • 配置验证异常:AWS Elastic Beanstatk无法与Amazon EC2通信以确定是否为Elastic Load均衡创建自定义安全组。 在创建AWS Elastic Beanstalk应用程序时,我在尝试继续“查看和启动”时遇到了这个错误。我是新手。请帮忙。

  • 我是AWS的新手,这个问题似乎很基本。然而,我需要看看我是否能找到解决方案。 我首先创建并启动了一个 EC2 实例,然后创建了一个弹性 Beanstalk 实例,并在该实例上部署了一个示例应用程序。默认情况下,弹性 Beanstalk 会将“默认环境”附加到此实例,我无法将其更改为我的 EC2 实例。如何将我的 EC2 实例(我之前创建的实例)附加到此弹性豆茎实例?我正在使用亚马逊免费套餐来学习。

  • 我在ec2-Classic实例的前面有一个负载均衡器。我通过直接链接到我的负载均衡器的描述选项卡中列出的DNS名称值来检查负载均衡器是否正常工作。这给了我位于EC2实例上的网页主页。因此我的负载均衡器正在工作。我的负载均衡器和我的EC2实例在同一个可用区域。 我的负载平衡器设置了SSL证书,我有两个侦听器设置为将http(端口80)和https(端口443)作为http转发到实例端口80。我的EC

  • 我在将https添加到我的EC2实例时遇到了一个问题,也许你们可以找到让它工作的答案。 我有一个负载平衡器,它正在将连接转发到我的EC2实例,我已将SSL证书添加到负载平衡器,一切正常,我已将侦听器添加到端口443,该端口将转发到我的实例的端口443,我已将Apache配置为在端口443和80上侦听,现在这里是我的负载平衡器的屏幕截图: SSL证书有效,在端口80(HTTP)上一切正常,但如果我尝

  • 我正在尝试配置 SSL 证书以通过 AWS 弹性负载均衡支持 HTTPS。我已配置所有内容: 1)在AWS ELB(包括证书链)中配置GoDaddy SSL证书。 2)让ELB侦听器看起来像这样: 客户端--- HTML 是我为 ELB 部署的索引.html页面,用于确认 EC2 实例已启动并正在运行。 但是,我遇到的问题是,如果任何移动客户端框架命中 service.acme.com 服务end

  • 我正在尝试使用ELB部署一些nodejs站点,但ELB和EC2实例的安全组都存在一些问题。 我想做的是允许ELB接受端口80请求,并将这些请求转发到EC2实例上的端口3000,我不希望EC2实例可以从Internet直接访问,它们应该只能通过负载均衡器(在端口3000上)访问。 因此,在我的公有子网的 VPC 中,我有: < li >设置转发80 (HTTP)到3000 (HTTP)的ELB <