Виртуальный хост имени Apache с SSL - PullRequest
37 голосов
/ 05 февраля 2009

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

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

[warn] Init: IP-адрес сервера SSL / конфликт портов: host1.domain.com:443 (/ etc / apache2 / sites-enabled / host1: 1) против host2.domain.com:443 (/ etc / apache2 / сайты с поддержкой / 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>

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

Ответы [ 7 ]

21 голосов
/ 05 февраля 2009

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

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

7 голосов
/ 15 февраля 2010

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

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

3 голосов
/ 06 февраля 2009

Вы можете заменить:

VirtualHost ipaddress:443

с

VirtualHost *:443

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

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

Опять же, вы не сможете сделать это, если у вас есть несколько псевдонимов ip для одной машины.

2 голосов
/ 21 декабря 2016

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>
1 голос
/ 01 октября 2011

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

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

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

1 голос
/ 12 февраля 2009

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

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

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

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

0 голосов
/ 26 июля 2018

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

NameVirtualHost IP_Address:443
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...