Назад | Перейти на главную страницу

Несколько SSL-сертификатов на Apache с использованием нескольких общедоступных IP-адресов - не работает

Мне нужно настроить несколько сертификатов SSL на одном сервере Apache. Я уже знаю, что мне нужно несколько внешних IP-адресов, поскольку я не могу использовать SNI (на этом сервере запущен только Apache 2.2.3).

Я предполагал, что у меня все настроено правильно, к сожалению, все работает не так, как должно (или, может быть, я должен сказать, как я ожидал, что они будут работать) ...

В моем httpd.conf у меня есть:

NameVirtualHost *:80
NameVirtualHost *:443

Допустим, мой общедоступный IP-адрес - 12.0.0.1, а мой частный IP-адрес - 192.168.0.1.

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

<VirtualHost 12.0.0.1:443>
   ServerAdmin root@site.com

   ServerName blablabla.site.com

   DocumentRoot /data/sites/blablabla.site.com

   ErrorLog /data/sites/blablabla.site.com-error.log
   #CustomLog /data/sites/blablabla.site.com-access.log common

   SSLEngine On
   SSLCertificateFile /etc/httpd/conf/ssl/blablabla.site.com.crt
   SSLCertificateKeyFile /etc/httpd/conf/ssl/blablabla.site.com.key
   SSLCertificateChainFile /etc/httpd/conf/ssl/blablabla.site.com.ca-bundle

   <Location />
       SSLRequireSSL On
       SSLVerifyDepth 1
       SSLOptions +StdEnvVars +StrictRequire
   </Location>

</VirtualHost>

Когда я использую частный IP-адрес в моем виртуальном хосте, все работает так, как должно (отображается веб-сайт, определенный в моем виртуальном хосте), например:

<VirtualHost 192.168.0.1:443>
...same as above...
</VirtualHost>

Мой сервер прослушивает все интерфейсы:

[root@grbictwebp02 httpd]# netstat -tulpn | grep :443
tcp        0      0 0.0.0.0:443                 0.0.0.0:*                   LISTEN      5585/httpd

Что я делаю не так? Если я не могу заставить это работать, я не могу продолжать добавлять второй сертификат SSL на другой общедоступный IP ...

Если требуется дополнительная информация, просто дайте мне знать!

Вам следует начать с удаления

NameVirtualHost 

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

<VirtualHost 192.168.0.1:443>

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

Что вы имеете в виду, когда говорите «не работает»? Есть ли ошибки в журнале ошибок Apache? Пожалуйста, опубликуйте полную декларацию VirtualHost.

Задайте свой вопрос следующим образом: «Я выполнил следующие шаги, добавил здесь следующую конфигурацию, затем сделал это, и я ожидал, что он сделает это. Но там написано следующее. Что не так?» Чем яснее вы напишете свой пост, тем больше шансов, что вы сами найдете ответ.

Вам необходимо настроить свои виртуальные хосты с IP-адресами, привязанными к серверу.

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

(Если у вас есть оба общедоступных IP-адреса, подключенных к одному и тому же частному IP-адресу, вам необходимо это изменить - иметь разные частные IP-адреса для каждого общедоступного IP-адреса.)