Сайт SSL не використовує правильний IP в Apache та Ubuntu


10

Я намагаюся налаштувати веб-сервер apache-ubuntu-php. Мій веб-сервер розмістить кілька SSL-сайтів, кожен SSL-сайт матиме власну IP-адресу (якщо немає кращого способу зробити це).

Тому я вважаю, що перший крок - це отримати апашю для розпізнавання принаймні двох різних IP-адрес. Зараз у мене є версія SSL та не-SSL для веб-сайтів, які є http://mysite.com та https://mysite.com . Хоча обидва зараз працюють на моєму сервері, я не можу обох використовувати різні IP-адреси. Зараз обидва використовують IP 1.1.1.1. Я придбав другу IP-адресу 2.2.2.2, але https://mysite.com не прийме її, і firefox скаржиться на помилку "ssl_error_rx_record_too_long". Ось перегляд моїх 2 файлів vhost

/ etc / apache2 / увімкнено сайт / 000 за замовчуванням

#NameVirtualHost 1.1.1.1:80

#<VirtualHost 1.1.1.1:80>
<VirtualHost *:80>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog /var/log/apache2/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

/etc/apache2/site-enabled/mysite.com

<VirtualHost 1.1.1.1:80>
     ServerAdmin john@mysite.com
     ServerName mysite.com
     ServerAlias www.mysite.com
     DocumentRoot /srv/www/mysite.com/public_html/
     ErrorLog /srv/www/mysite.com/logs/error.log
     CustomLog /srv/www/mysite.com/logs/access.log combined
</VirtualHost>
<IfModule mod_ssl.c>
#<VirtualHost 2.2.2.2:443>
<VirtualHost *:443>
     ServerAdmin john@mysite.com
     ServerName mysite.com
     ServerAlias www.mysite.com
     DocumentRoot /srv/www/mysite.com/public_html/
     ErrorLog /srv/www/mysite.com/logs/error.log
     CustomLog /srv/www/mysite.com/logs/access.log combined

        SSLEngine on

        SSLCertificateFile    /etc/ssl/localcerts/www.mysite.com.crt
        SSLCertificateKeyFile /etc/ssl/localcerts/www.mysite.com.pem

        <FilesMatch "\.(cgi|shtml|phtml|php)$">
                SSLOptions +StdEnvVars
        </FilesMatch>
        <Directory /usr/lib/cgi-bin>
                SSLOptions +StdEnvVars
        </Directory>

        BrowserMatch ".*MSIE.*" \
                nokeepalive ssl-unclean-shutdown \
                downgrade-1.0 force-response-1.0

</VirtualHost>
</IfModule>

На сайті mysite.com, якщо я заміню <VirtualHost *: 443> на <VirtualHost 2.2.2.2:243>, Firefox скаржиться на помилку "ssl_error_rx_record_too_long".

Тому коли я намагаюся створити та включити /etc/apache2/site-enabled/mysite2.com з іншим сертифікатом SSL на третій IP-адресі, Apache скаржиться на проблему "перекриття".

Чи може хтось сказати мені, як підняти свій сервер, щоб я міг розміщувати кілька веб-сайтів SSL в різних доменах? Я хочу, щоб сертифікат SSL працював для IE 7+, FF та Safari на популярних ОС, таких як WinXP, Vista, Win7 та OSX.

Відповіді:


7

Я встановив це на своїх серверах, налаштувавши файл /etc/apache2/ports.conf таким чином:

<IfModule mod_ssl.c>
NameVirtualHost *:443
    # SSL name based virtual hosts are not yet supported, therefore no
    # NameVirtualHost statement here
    NameVirtualHost *:443
    Listen 443
</IfModule>

Тоді ви зможете користуватися, редагуючи /etc/apache2/sites-enabled/mysite.com (деякий код пропущено, щоб скоротити приклад):

<VirtualHost *:443>
     ServerName mysite1.com
     SSLCertificateFile    /etc/ssl/localcerts/www.mysite1.com.crt
     SSLCertificateKeyFile /etc/ssl/localcerts/www.mysite1.com.pem
</VirtualHost>

<VirtualHost *:443>
    ServerName mysite2.com
    SSLCertificateFile    /etc/ssl/localcerts/www.mysite2.com.crt
    SSLCertificateKeyFile /etc/ssl/localcerts/www.mysite2.com.pem
</VirtualHost>

За стільки пристрастей, скільки вам подобається.

Редагувати: ПОТРІБНА ДРУГА ДУМКА? ПОДІЙТЕ ТУТ: http://forum.slicehost.com/comments.php?DiscussionID=3244


о, це працювало ... і кожен з веб-сайтів використовує ту саму 1.1.1.1 IP-адресу. Так це означає, що мені вже не потрібна IP-адреса 2.2.2.2? Мені не потрібен унікальний IP для кожного домену SSL?
Джон

Вам не потрібно використовувати унікальний IP для кожного домену SSL.
Патрік Р

Поясніть, чому вам не потрібен окремий IP для кожного домену. Це суперечить усьому, що я розумію про SSL ...
Джош

Я не впевнений, що сказати, окрім того, що я використовував декілька сертифікатів символів на серверах з одним IP. Поки CommonName збігається з ServerName, ви будете добре. Тепер, якщо ви перебуваєте у спільному хостинг-середовищі, це може дозволити іншим використовувати ваш сервер. Якщо він працював на johnlai2004 і на мене ... ну, у чому ж проблема?
Патрік Р

voretaq7 пояснив міркування на serverfault.com/questions/109800/… - Це TSL, а не SSL. SSL вимагає співвідношення 1: 1 між IP-адресами та сертифікатами. TLS не робить. Я просто не знав, що TLS може використовуватися для HTTPS (поки що)
Джош

0

Я зараз не можу перевірити, тому це лише дика здогадка: Файли зазвичай читаються в алфавітному порядку. Можливо, у вас буде більше удачі, коли ви прочитаєте їх у зворотному порядку, наприклад, перейменуйте 000-типовий за замовчуванням 500 та використовуйте 400-міхост. Я не можу згадати, де в апачі подобається мати хост за замовчуванням - перший чи останній. Але з того, що ви говорите (перекриваєтесь), це може бути останнім


Ви можете побачити, що він буде використовувати з apachectl -t -D DUMP_VHOSTS. Наказ спочатку триває.
Річард Солт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.