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

ELB的AWS证书管理器指向在EC2上运行的Apache服务器

班承德
2023-03-14

我正在阅读证书管理器的aws文档。我可以将SSL证书与ELB关联。我已经这样做了,我的应用程序仍然驻留在部署在Ubuntu EC2服务器上的Apache服务器上。

在文档中,它有以下内容:

注意目前,ACM证书与弹性负载平衡负载平衡器或Amazon CloudFront发行版相关联。尽管您在Amazon EC2实例安装了您的网站,但是您没有在那里部署ACM证书。相反,在您的弹性负载平衡负载平衡器或CloudFront发行版上部署ACM证书。

根据我的理解,这意味着我们可以在 EC2 上部署应用程序,并将其添加到具有来自 ACM 的证书的负载平衡下。

这就是为Web应用程序使用SSL所需的全部内容。

但是当我不使用这种方法时,我使用下面的Apache配置来配置SSL。

<VirtualHost *:80>
        DocumentRoot /var/www/html/
        ServerName example.com
        ServerAlias example.com
        ErrorLog ${APACHE_LOG_DIR}/diyoron-error_log
        CustomLog ${APACHE_LOG_DIR}/diyoron-access_log common


        <Directory /var/www/html/>
                RewriteEngine on
                RewriteCond %{HTTPS} off
                RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R]
        </Directory>

</VirtualHost>

<VirtualHost *:443>
        # ServerAdmin webmaster@example.com
        DocumentRoot /var/www/html/

        ServerName example.com
        ServerAlias example.com
        ErrorLog ${APACHE_LOG_DIR}/example-error_log
        CustomLog ${APACHE_LOG_DIR}/example-access_log common
        SSLEngine On

        SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
        SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
        SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem

</VirtualHost>

但是在我当前的安排中,我不能在我的Apache配置中配置SSLCertificateKeyFile、SSLCertificateChainFile、SSLCertificateFile。

如果有人能指引我走一条正确的道路,我将不胜感激。

AH00016: Configuration Failed
[Fri Apr 21 23:14:01.184314 2017] [ssl:emerg] [pid 1190] AH02572: Failed to configure at least one certificate and key for example.com:443
[Fri Apr 21 23:14:01.184826 2017] [ssl:emerg] [pid 1190] SSL Library Error: error:140A80B1:SSL routines:SSL_CTX_check_private_key:no certificate assigned
[Fri Apr 21 23:14:01.184834 2017] [ssl:emerg] [pid 1190] AH02311: Fatal error initialising mod_ssl, exiting. See /var/log/apache2/error.log for more information

共有1个答案

宦文柏
2023-03-14

您将在ELB上终止SSL并将其配置为将HTTP和HTTPS请求作为HTTP转发(到您实例的端口80):

因此,您不需要

此外,在您的Apache配置中,在

要确定客户端和负载均衡器之间使用的协议,请使用 X-转发-Proto 请求标头(弹性负载均衡将客户端和负载均衡器之间使用的协议存储在 X-Forward-Proto 请求标头中,并将标头传递到您的服务器):

RewriteCond %{HTTP:X-Forwarded-Proto} !https [NC]
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

 类似资料:
  • 他们为弹性负载平衡器(ELB)和CloudFront提供证书,但我在任何地方都没有找到EC2。 有什么方法可以将证书与EC2一起使用吗?

  • 我们希望使用ACM来管理我们的证书,使我们能够轻松地为第三方动态创建它们(使用CNAME验证)。这很好用,只是我们似乎无法通过我们的前端服务器获得支持证书所需的私钥,该服务器由AWS托管,但在其他方面独立于任何其他AWS服务进行管理。(它本质上是运行在EC2实例上的Express服务器。) 有没有可能从ACM中获取键值,以便我们可以使用它们引导Node https服务器?还是亚马逊根本不支持这一点

  • Managing certificates You should generate your own certificates before going to production. Depending on the go version used, the notary-server certificate may have to be marked for both EKUs clientAu

  • 如何在运行wordpress的EC2实例上安装SSL证书?我尝试了以下链接:< br > https://AWS . Amazon . com/blogs/AWS/new-AWS-certificate-manager-deploy-SSL ts-based-apps-on-AWS/http://docs . AWS . Amazon . com/IAM/latest/user guide/id

  • 我将前端托管在调用后端服务器的服务器上,即Elastic Load Balancer(ELB),并使用Elastic Beanstalk进行部署,因此它负责自动缩放。 余烬/前端- 现在我想在两者之间添加API网关,并确保ELB只接受来自API网关的请求。我发现了- > 是否可以将 API 网关提供的客户端证书文件与我购买的 SSL 证书一起推送到证书管理器(控制台/cli/任何地方)? 是否可以

  • 我开始知道我可以使用 AWS 证书管理器 (ACM) 来获取通配符 SSL,即 *.example.com。 在 ACM 中创建的 SSL 证书可以在 AWS ELB 后面运行的 EC2 上使用。 当AWS ELB从端口443到端口80上的EC2发出请求,浏览器中的URL仍在HTTPS上,内部PHP在HTTP上运行(不在nginx配置中监听到443),因此会话无效,应用程序注销流发生,会话无效时,