【问题标题】:Multiple SSL certs on one EC2 instance一个 EC2 实例上的多个 SSL 证书
【发布时间】:2017-07-28 09:05:33
【问题描述】:

我有一个 ec2 实例,它由 2 个不同的域(.com.au 和 .co.nz)指向。这很好用。

我正在尝试为这两个域设置 SSL。目前我已经使用 LetsEncrypt 并成功为 co.nz 域设置了 SSL,现在希望为 .com.au 做同样的事情。

我已按照此处的指南进行操作:

https://www.haktansuren.com/installing-free-letsencrypt-ssl-multiple-domains-sub-domains-amazon-web-services-aws-ec2-simple-way/

但是当我通过 SSLLabs.com 运行 .com.au 站点时,我得到一个“证书名称不匹配错误”,当我尝试直接进入 .com.au 域时,我得到这个(来自 chrome)“这个服务器无法证明它是 **.com.au;它的安全证书来自 **.co.nz。”

.com.au 域是 ss.conf 文件中的第二个“虚拟主机”条目,当我更改顺序时,我得到 .co.nz 域的相同错误,所以它似乎只是在读取一个条目还是什么?

非常感谢您的帮助

【问题讨论】:

  • 我认为这是Super UserServer Fault 的问题。您可能想要显示您的 Apache(?) 配置。您在此处尝试启用的功能称为 SNI——它允许浏览器告诉 Web 服务器将请求哪个主机,以便提供正确的证书。

标签: amazon-web-services ssl amazon-ec2 https lets-encrypt


【解决方案1】:
  1. 您可以使用ACM为您想要的任何域创建免费证书。
  2. 创建一个弹性负载均衡器并选择您刚刚创建的证书。
  3. 将 EC2 实例连接到 Elastic Load Balancer

最佳实践是创建启动配置并创建 Auto Scaling 组,让 ASG 处理 EC2 实例的创建。在 AWS 中,您的实例可以随时被终止,依赖单个 EC2 实例不是一个好习惯。您可能会在临时存储中存储的所有数据突然丢失它!

【讨论】:

    【解决方案2】:

    如果是 Apache:

    您可以在 ELB 或 Apache/Nginx(服务器)级别终止 SSL 证书

    在多租户(多客户端)架构的情况下,我们可能需要在单个 ELB 下支持不同的客户(具有不同的域 - *.abc.com、*.xyz.com),这在现有的 ELB 设置。

    解决方案:您可以通过在 ELB 中添加侦听器来做到这一点,如下所示: TCP 443(而不是 HTTPS - 443) - 这将通过 443 请求然后,您可以在服务器级别终止 SSL 证书

    您必须从外部供应商(如 GoDaddy)购买证书并在服务器级别安装和终止证书。

    例如,Apache 虚拟主机看起来像

    NameVirtualHost *:443
    <VirtualHost *:443>
            ServerName abc.com
    
            ####abc HTTPS Certificate
            SSLEngine on
            SSLCertificateFile /opt/organization/site/ssl_keys/abc/abc_gd.crt
            SSLCertificateKeyFile /opt/organization/site/ssl_keys/abc/abc.pem
            SSLCertificateChainFile /opt/organization/site/ssl_keys/abc/abc_gd_bundle.crt
    
            WSGIScriptAlias / /opt/organization/site/deployment-config/abc.wsgi
    
            ServerSignature On
            Alias /media/ /opt/organization/site/media/
            <Directory /opt/organization/site/media/>
            Order deny,allow
            Allow from all
            </Directory>
    </VirtualHost>
    
    NameVirtualHost *:80
    <VirtualHost *:80>
            ServerName abc.com
    
            #Rewrite to HTTPS in case of HTTP
            RewriteEngine On
            RewriteCond %{SERVER_NAME} abc.com
            RewriteCond %{HTTP:X-Forwarded-Proto} !https
            RewriteRule . https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
    
            WSGIScriptAlias / /opt/organization/site/deployment-config/abc.wsgi
            ServerSignature On
            Alias /media/ /opt/organization/site/media/
            <Directory /opt/organization/site/media/>
            Order deny,allow
            Allow from all
            </Directory>
    </VirtualHost>
    

    【讨论】:

      猜你喜欢
      • 2012-04-24
      • 1970-01-01
      • 1970-01-01
      • 2016-05-03
      • 1970-01-01
      • 2015-06-21
      • 1970-01-01
      • 2020-10-31
      • 2014-03-13
      相关资源
      最近更新 更多