3

我一直在努力想弄清楚如何在亚马逊 VPC 实例上设置多个 SSL 证书(我使用的是亚马逊的标准 linux AMI

这是我所做的:

  1. 我设置了一个 VPC 实例
  2. 添加了辅助私有 IP 地址
  3. 添加了 2 个弹性 IP 地址并将它们“链接”到私有地址
  4. 去了我的域名注册商并将两个测试域指向弹性 IP 地址
  5. 等到传播新的 IP 地址
  6. 我将 SSL 证书上传到 VPC 实例

然后我尝试编辑ssl.conf,见第 74 到 93 行httpd.conf,见第 1046 到 1086 行

ssl.conf

<VirtualHost domain1.com:443>
    ServerName www.domain1.com:443
    DocumentRoot "/var/www/html"
    SSLENGINE on
    SSLCertificateFile /etc/ssl/domain1_com.crt
    SSLCertificateKeyFile /etc/ssl/domain1_com.key
    SSLCertificateChainFile /etc/ssl/domain1_com.ca-bundle
</VirtualHost>

<VirtualHost _default_:443>
    ...Default SSL certificate (domain1.com) here...
</VirtualHost>

httpd.conf

<VirtualHost *:80>
    ServerName domain1.com
    ServerAlias www.domain1.com
    DocumentRoot /var/www/html
    ServerAdmin webmaster@domain1.com
</VirtualHost>

<VirtualHost *:80>
    ServerName domain2.com
    ServerAlias www.domain2.com
    DocumentRoot /var/www/html
    ServerAdmin webmaster@domain2.com
</VirtualHost>

我也试过了<VirtualHost *:443><VirtualHost IP.ADDRESS:443>也没用。

结果基本上是这样的:

  1. domain1.com(这是默认的 SSL 证书)工作得很好(解决得很好,绿条)
  2. domain2.com: 甚至没有解决任何问题,即使当我这样做时ping www.domain2.com我也得到了正确的弹性 IP

我的问题是:知道如何让 domain2.com 解析并使用正确的 SSL 证书吗?


编辑/附加信息:

我也试过这个:

  1. 按照建议暂时停止防火墙,即。sudo service iptables stop
  2. 从 EC2 之外,curl --connect-timeout 10 https://domain2.com给了我这个 curl: (28) connect() timed out!

wget https://www.domain2.com/给了我这个:--2013-10-03 15:57:22-- domain2.com Resolving www.domain2.com... 54.229.111.22 Connecting to www.domain2.com|54.229.111.22|:443... failed: Connection timed out. Retrying.


编辑(2):

我注意到两件事:

  1. 如果我使用 2 个网络接口(每个 NIC 有一个私有 IP)sudo ifconfig 不显示第二个 NIC(即eth1),并且无论我使用一个还是两个 NIC,sudo ifconfig总是返回第一个私有 IP(10.0.0.10),而不是第二个一个(10.0.0.183)

不出所料,无法访问的网站domain2.com对应于第二个IP(缺少):10.0.0.183

  1. 此命令正确地重新调整与whilecurl --interface 10.0.0.10 ifconfig.me关联的弹性 IP 地址domain1.com

此命令curl --interface 10.0.0.183 ifconfig.me返回:

curl: (45) bind failed with errno 99: Cannot assign requested address
  1. 按照这个指南,我可以看到eth1,但domain2.com仍然无法访问

curl --interface 10.0.0.183 ifconfig.me现在返回:

curl: (7) Failed connect to ifconfig.me:80; Connection timed out

4

3 回答 3

2

您将需要为 SSL 使用基于 ip 的虚拟主机。您要收听的 IP 地址将是私有 IP,而不是公共 IP。

您在端口 80 上的站点可以使用基于名称的虚拟主机。但是你需要确保你使用的是这个指令:NameVirtualHost *:80

于 2013-10-03T01:28:21.613 回答
2

本教程为我修复了它

一个小(但很重要)的注意事项:

而不是键入此命令(步骤 #5):

echo "1 admin" >> /etc/iproute2/rt_tables

你应该这样做:

sudo vi /etc/iproute2/rt_tables

然后1 admin在文件末尾添加

于 2013-10-06T21:53:52.500 回答
1

我认为您需要为此遵循故障排除方法。

从简化配置和验证基本组件开始,然后逐步构建完整的解决方案。例如:

  • 将 domain2 的弹性 IP 映射到新的 EC2 服务器。
  • 在新服务器上,首先通过 HTTP 使 domain2.com 可用
  • 一旦它通过 HTTP 工作,将其设置为通过 HTTPS 工作
  • 一旦它通过 HTTPS 工作,将弹性 IP 映射回原始服务器,并使用 HTTP 使其在原始服务器上工作
  • 一旦它通过 HTTP 工作,最后一步是让它在原始服务器上通过 HTTPS 工作。

这里的目的是验证每个步骤并准确找出问题所在。然后,这将使您能够最好地引导您的精力来解决根本原因。

于 2013-10-04T22:23:34.757 回答