Подтвердить что ты не робот

Имя виртуального хоста Apache с SSL

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

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

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

Ответ 3

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

VirtualHost ipaddress:443

с

VirtualHost *:443

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

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

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

Ответ 4

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

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

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

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

Ответ 5

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

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

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

Ответ 6

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