Вопрос

Я пытаюсь настроить наши серверы для разрешения трафика через SSL.Я знаю, что SSL не работает с виртуальным хостом имени, но у нас есть все наши серверы Apache на виртуальных машинах с выделенными частными IP-адресами.У нас есть основная виртуальная машина с настройкой mod_proxy для маршрутизации трафика на соответствующие виртуальные машины.

Однако для маршрутизации https-трафика нам необходимо установить сертификат на прокси-сервере, а также на виртуальной машине.У нас есть подстановочный сертификат, который можно использовать на всех наших хостах.Кажется, все работает правильно, но в журналах Apache для прокси-сервера я получаю следующее:

[предупреждение] Инициализация:Конфликт IP/порта SSL-сервера:host1.domain.com:443 (/etc/apache2/sites-enabled/host1:1) против.хост2.домен.com:443 (/etc/apache2/sites-enabled/host2:1)

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

<VirtualHost ipaddress:443>
    ServerName host1.domain.com
    ProxyPreserveHost On
    ProxyRequests Off
    ProxyPass / https://privateip:443/
    ProxyPassReverse / https://privateip:443/

    SSLProxyEngine on
    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/server.crt
    SSLCertificateKeyFile /etc/ssl/private/server.key
</VirtualHost>

Есть ли способ заставить это работать?

Это было полезно?

Решение

Похоже, Apache предупреждает вас, что у вас есть несколько <VirtualHost> разделы с одинаковым IP-адресом и портом...Что касается того, чтобы заставить его работать без предупреждений, я думаю, вам нужно будет использовать что-то вроде указания имени сервера (SNI), способа идентификации имени хоста, запрошенного как часть подтверждения SSL.По сути, он позволяет вам использовать виртуальный хостинг на основе имени через SSL, но я не уверен, насколько хорошо он поддерживается браузерами.За исключением чего-то вроде SNI, вы в основном ограничены одним доменным именем с поддержкой SSL для каждого IP-адреса, который вы предоставляете общедоступному Интернету.

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

Другие советы

Насколько я знаю, Apache поддерживает SNI, так как версия 2.2.12 К сожалению, документация еще не отражает это изменение.

Перейти на http://wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI пока это не закончится

Возможно, вам удастся заменить:

VirtualHost ipaddress:443

с

VirtualHost *:443

Вероятно, вам придется сделать это на всех ваших виртуальных хостах.

Вероятно, это прояснит это сообщение.Пусть директива ServerName позаботится о маршрутизации запроса сообщения.

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

VirtualHost будет выглядеть так:

NameVirtualHost IP_Address:443

<VirtualHost IP_Address:443>
    SSLEngine on
    SSLCertificateFile /etc/pki/tls/certs/ca.crt    # Where "ca" is the name of the Certificate
    SSLCertificateKeyFile /etc/pki/tls/private/ca.key
    ServerAdmin webmaster@domain_name.com
    DocumentRoot /var/www/html
    ServerName www.domain_name.com
    ErrorLog logs/www.domain_name.com-error_log
    CustomLog logs/www.domain_name.com-access_log common
</VirtualHost>

Apache не поддерживает SSL на виртуальном хосте на основе имени, а только на виртуальных хостах на основе IP.

Источник:Часто задаваемые вопросы по Apache 2.2 SSL Почему невозможно использовать виртуальный хостинг на основе имени для идентификации различных виртуальных хостов SSL?

В отличие от SSL, спецификация TLS допускает использование хостов на основе имен (SNI, как упоминалось кем-то другим), но Apache пока не поддерживает эту функцию.Предположительно, это будет в будущем выпуске при компиляции с openssl 0.9.8.

Также, mod_gnutls утверждает, что поддерживает SNI, но я никогда этого не пробовал.

Сначала вам нужен NameVirtualHost ip: 443 в файле конфигурации!Вероятно, у вас есть один с 80 на конце, но вам также понадобится один с 443.

Во-вторых, вам нужен сертификат *.domain (подстановочный знак) (его можно сделать).

В-третьих, вы можете сделать только что-то.доменные сети на одном ip (из-за сертификата)

Вы ДОЛЖНЫ добавить часть ниже, чтобы включить NameVirtualHost функциональность с заданным IP.

NameVirtualHost IP_Address:443
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top