Вопрос: _default_ VirtualHost перекрывается на порте 443, первое имеет приоритет


У меня есть два рубина на рельсах. 3 приложения работают на одном сервере (ubuntu 10.04), оба с SSL.

Вот мой конфигурационный файл apache:

<VirtualHost *:80>
ServerName example1.com
DocumentRoot /home/me/example1/production/current/public
</VirtualHost>
<VirtualHost *:443>
ServerName example1.com
DocumentRoot /home/me/example1/production/current/public
SSLEngine on
SSLCertificateFile /home/me/example1/production/shared/example1.crt
SSLCertificateKeyFile /home/me/example1/production/shared/example1.key
SSLCertificateChainFile /home/me/example1/production/shared/gd_bundle.crt
SSLProtocol -all +TLSv1 +SSLv3
SSLCipherSuite HIGH:MEDIUM:!aNULL:+SHA1:+MD5:+HIGH:+MEDIUM
</VirtualHost>


<VirtualHost *:80>
ServerName example2.com
DocumentRoot /home/me/example2/production/current/public
</VirtualHost>
<VirtualHost *:443>
ServerName example2.com
DocumentRoot /home/me/example2/production/current/public
SSLEngine on
SSLCertificateFile /home/me/example2/production/shared/iwanto.crt
SSLCertificateKeyFile /home/me/example2/production/shared/iwanto.key
SSLCertificateChainFile /home/me/example2/production/shared/gd_bundle.crt
SSLProtocol -all +TLSv1 +SSLv3
SSLCipherSuite HIGH:MEDIUM:!aNULL:+SHA1:+MD5:+HIGH:+MEDIUM
</VirtualHost>

В чем проблема:

При перезапуске моего сервера он дает мне некоторые результаты следующим образом:

 * Restarting web server apache2                                   
 [Sun Jun 17 17:57:49 2012] [warn] _default_ VirtualHost overlap on port 443, the first has precedence
 ... waiting [Sun Jun 17 17:57:50 2012] [warn] _default_ VirtualHost overlap on port 443, the first has precedence

В googling, почему этот вопрос идет, я получил что-то вроде этого:

Вы не можете использовать виртуальные хосты на основе имени с SSL, потому что SSL-квитирование (когда браузер принимает сертификат защищенного веб-сервера) встречается до HTTP-запроса, который идентифицирует соответствующий виртуальный хост на основе имени. Если вы планируете использовать виртуальные хосты на основе имени, помните, что они работают только с вашим незащищенным веб-сервером.

Но не удалось выяснить, как запустить два приложения ssl на одном сервере.

Может кто-нибудь мне помочь?


59
2018-06-17 22:42


Источник


У вас нет _default_ vhosts в конфигурации, которую вы предоставили, поэтому они находятся в другом месте. Какой результат apache2ctl -S? (Да, можно запускать несколько хостов на основе имени SSL на разных сертификатах, при условии, что вам не нужно поддерживать клиентские браузеры под управлением Windows XP или любые другие, которые не поддерживают SNS SNI. Вам нужно поддерживать Windows XP?) - Shane Madden♦


Ответы:


Почти готово!

Добавьте это в ports.conf или http.conf и сохраните свою конфигурацию выше.

<IfModule mod_ssl.c>
    # If you add NameVirtualHost *:443 here, you will also have to change
    # the VirtualHost statement in /etc/apache2/sites-available/default-ssl
    # to <VirtualHost *:443>
    # Server Name Indication for SSL named virtual hosts is currently not
    # supported by MSIE on Windows XP.

    # !important below!
    NameVirtualHost *:443 
    Listen 443
</IfModule>

83
2017-10-01 07:52



Комментарий «#! Important!» Нужно удалить или переместить в другую строку. В противном случае большое спасибо за интерпретацию этого неточного сообщения об ошибке для меня. - flickerfly
Это больше не работает в Apache 2.4.7 - malhal
Спасибо. Я нашел, что мне нужно было прокомментировать Listen 443, потому что это также используется в моих индивидуальных конфигурациях conf.d / website.conf - dlink


Это помогло мне выполнить «/ usr / sbin / apachectl -S». Этот выход команды показывает TWO файлы «ssl.conf» на том же пути. Переместите или удалите файл нарушителя, и все должно работать после.


2
2017-08-08 21:10





Вы можете добавить это в свою конфигурацию apache в /etc/apache2/ports.conf:

<IfModule mod_ssl.c>                
    Listen 443                      
    <IfModule !mod_authz_core.c>    
        # Apache 2.2                
        NameVirtualHost *:443       
    </IfModule>                     
</IfModule>                         

(Это работает в обоих: apache 2.2 и 2.4)


0
2018-05-17 13:21