Мне нужно настроить несколько сертификатов 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-адреса.)