Настройте несколько SSL-сертификатов на amazon VPC

Я бился головой о стену, пытаясь понять, как настроить несколько SSL-сертификатов в экземпляре amazon VPC (я использую стандартный linux AMI amazon)

Вот что я сделал:

  1. Я устанавливаю экземпляр VPC
  2. Добавлен дополнительный частный IP-адрес
  3. Добавлено 2 эластичных IP-адреса и «связано» их с частными.
  4. Пошел к моему регистратору доменов и указал два тестовых домена на эластичные IP-адреса.
  5. Подождал, пока новые IP-адреса будут распространены
  6. Я загрузил SSL-сертификаты в экземпляр VPC

Затем я попытался отредактировать ssl.conf, см. строки с 74 по 93 и http://pastebin.com/tyaj7qPL:

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 [email protected]
</VirtualHost>

<VirtualHost *:80>
    ServerName domain2.com
    ServerAlias www.domain2.com
    DocumentRoot /var/www/html
    ServerAdmin [email protected]
</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):

Я заметил 2 вещи:

  1. Если я использую 2 сетевых интерфейса (каждая сетевая карта с одним частным IP-адресом), sudo ifconfig не показывает вторую сетевую карту (т.е. eth1), и независимо от того, использую ли я одну или две сетевые карты, sudo ifconfig всегда возвращает 1-й частный IP-адрес (10.0.0.10), никогда не 2-й (10.0.0.183)

Неудивительно, что недоступный веб-сайт domain2.com соответствует второму IP-адресу (который отсутствует): 10.0.0.183.

  1. Эта команда curl --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


person TheDude    schedule 02.10.2013    source источник
comment
Вы говорите, что domain2.com (без www) не пингуется с правильным IP-адресом (или любым IP-адресом? Неизвестный хост?), но www.domain2.com делает?   -  person Michael - sqlbot    schedule 03.10.2013
comment
@Michael-sqlbot: Нет, domain2.com пингуется на правильный IP-адрес, но ни domain2.com, ни www.domain2.com не разрешаются правильно :(   -  person TheDude    schedule 03.10.2013
comment
Хорошо, я бы сказал, что вы используете неправильный термин для описания своей проблемы, тогда... если вы пингуете по имени и получаете правильный адрес, это определение правильного разрешения. Вы можете подключиться к веб-серверу, но получаете неправильный сертификат? Или что именно происходит, когда вы пытаетесь зайти на domain2.com с помощью веб-браузера или, что еще лучше, с помощью wget или curl?   -  person Michael - sqlbot    schedule 03.10.2013
comment
<VirtualHost private.internal.ip.address:443> должно быть правильным параметром, как показано в опубликованном вами файле конфигурации.   -  person Michael - sqlbot    schedule 03.10.2013
comment
@Michael-sqlbot: кажется, я использовал правильные термины, пожалуйста, не путайте: у меня нет проблем с domain1.com (он разрешается правильно, и сертификат в порядке), проблема с domain2.com: никак не резолвится, не могу даже подключиться проверить сертификат :(   -  person TheDude    schedule 03.10.2013
comment
Да, я последовал совету datasage, перезапустил apache, но domain2.com не разрешается :(   -  person TheDude    schedule 03.10.2013
comment
Из-за пределов EC2 curl --connect-timeout 10 https://domain2.com возвращает какой ответ, пожалуйста?   -  person Michael - sqlbot    schedule 03.10.2013
comment
Я получил это, используя сервер вне EC2: curl: (28) connect() timed out!   -  person TheDude    schedule 03.10.2013
comment
wget https://www.domain2.com/ дал мне это: --2013-10-03 15:57:22-- domain2.com Разрешение www.domain2.com... 54.229.111.22 Подключение к www.domain2.com|54.229.111.22|:443... не удалось: время ожидания подключения истекло. Повторная попытка.`   -  person TheDude    schedule 03.10.2013
comment
Что ж, вы должны быть в состоянии исключить apache из списка вещей, которые могут быть проблемой, по крайней мере, на данный момент, и посмотреть дальше, потому что, если бы apache не слушал, вы должны были увидеть отказ в соединении. Показывает ли sudo ifconfig, что вашему экземпляру известен вторичный частный IP-адрес?   -  person Michael - sqlbot    schedule 03.10.2013
comment
Спасибо! Да, это так, в списке указаны как 10.0.0.10, так и 10.0.0.83   -  person TheDude    schedule 03.10.2013
comment
Как насчет проверки конфигурации или временного отключения iptables?   -  person Michael - sqlbot    schedule 03.10.2013
comment
Боюсь, я не понимаю :( Какую конфигурацию мне проверить? VPC/Amazon? или OS/centos? Я сделал sudo service iptables restart, но проблема не устранена :(   -  person TheDude    schedule 03.10.2013
comment
Извините, я имел в виду проверку конфигурации iptables... sudo service iptables stop сбросить файрволл, чтобы проверить, начинает ли проходить трафик (имеется в виду не правильно настроенный).   -  person Michael - sqlbot    schedule 03.10.2013
comment
Понятно. Я отключил брандмауэр, но у меня все та же проблема (curl также выдавал ту же ошибку, что и раньше) :(   -  person TheDude    schedule 03.10.2013


Ответы (3)


Вам нужно будет использовать виртуальный хостинг на основе IP для SSL. IP-адрес, который вы собираетесь прослушивать, будет частным, а не общедоступным IP-адресом.

Ваши сайты на порту 80 могут использовать виртуальный хостинг на основе имени. Но вам нужно убедиться, что вы используете эту директиву: NameVirtualHost *:80

person datasage    schedule 03.10.2013
comment
Я последовал вашему совету (см. http://pastebin.com/tyaj7qPL и ssl.conf, строки с 74 по 93), но у меня такое же поведение: domain1.com работает нормально, а domain2.com — нет. даже разрешать, даже если ping www.domain2.com прекрасно разрешает правильный IP-адрес! - person TheDude; 03.10.2013
comment
@datasage большое спасибо за подсказку. Очень очень полезно. Я почти целый день пытался отладить 2 ip на vpc ec2 и не смог заставить его работать. Ваше предложение действительно очень помогает :) - person icasimpan; 05.05.2014

Это руководство исправило это для меня

Одно маленькое (но важное) замечание:

Вместо ввода этой команды (шаг № 5):

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

Вместо этого вы должны сделать это:

sudo vi /etc/iproute2/rt_tables

затем добавьте 1 admin в конец файла

person TheDude    schedule 06.10.2013

Я думаю, вам нужно следовать методологии устранения неполадок для этого.

Начните с упрощения конфигурации и проверки основных компонентов, а затем постепенно доведите ее до полного решения. Например:

  • Сопоставьте эластичный IP-адрес для домена 2 с новым сервером EC2.
  • На новом сервере начните с того, что сделайте domain2.com доступным через HTTP.
  • Как только он заработает через HTTP, настройте его для работы через HTTPS.
  • После того, как он работает через HTTPS, сопоставьте эластичный IP-адрес с исходным сервером и заставьте его работать на исходном сервере с помощью HTTP.
  • Как только он заработает через HTTP, сделайте последний шаг, чтобы заставить его работать через HTTPS на исходном сервере.

Цель здесь состоит в том, чтобы проверить каждый шаг и точно определить, где он идет не так. Это позволит вам наилучшим образом направить свою энергию на устранение первопричины.

person Community    schedule 04.10.2013
comment
Шаги № 1, № 2 и № 3 --> ОК. Но когда я сопоставляю эластичный IP-адрес с первым экземпляром, чтобы два IP-адреса/веб-сайта работали из одного экземпляра, www.domain2.com больше не работает! (таймаут соединения) - person TheDude; 05.10.2013
comment
Итак, проблема не связана с SSL-частью конфигурации. Ваш инстанс EC2 работает в облаке VPC? (Мне интересно, может ли это быть связано с сетевыми ACL VPC или чем-то подобным). - person ; 06.10.2013
comment
Да, это действительно в VPC - person TheDude; 06.10.2013
comment
Хорошо, я отредактировал свой вопрос, чтобы добавить больше информации/вещей, которые я заметил (см. раздел EDIT (2) в конце)... спасибо! - person TheDude; 06.10.2013