SSL не работает на Apache с Ubuntu Natty и несколькими доменами

Возникли проблемы при работе SSL на моем сервере. Мне это нужно только для одного из двух моих доменов в этом окне. У меня есть два IP-адреса, и я использую записи A на своем DNS для указания доменов на разные IP-адреса.

Вот мой httpd.conf:

NameVirtualHost XX.XX.XXX.X1:80
NameVirtualHost XX.XX.XXX.X2:80
NameVirtualHost XX.XX.XXX.X2:443

    <VirtualHost XX.XX.XXX.X1:80>
    ServerName domain1.com
    ServerAlias .*
    WSGIScriptAlias / /home/domain1/domain1.wsgi 
    </VirtualHost>

<VirtualHost XX.XX.XXX.X2:80>
        ServerName domain2.me
    DocumentRoot /var/www/domain2
</VirtualHost>

 <VirtualHost XX.XX.XXX.X2:443>

ServerName www.domain2.me

DocumentRoot /var/www/domain2
ServerAdmin ruedaminute@gmail.com

SSLEngine ON

SSLCertificateFile /etc/apache2/ssl/domain2.me.ssl/domain2.me.crt

SSLCertificateKeyFile /etc/apache2/ssl/domain2.me.ssl/domain2.me.key

SSLCACertificateFile /etc/apache2/ssl/domain2.me.ssl/gd_bundle.crt

</VirtualHost>   

Надеюсь, что-то явно не так выпрыгивает. Вот ссылки на два гистограммы с другими конфигами, которые я пробовал. первый просто пытается использовать сертификат snakeoil, поставляемый с apache:

Snakeoil Cert

Еще одна неудачная попытка, аналогичная той, что была опубликована

По сути, я получаю "Страница недоступна", когда открываю https://www.domain2.me/.

Заранее спасибо.

ОБНОВЛЕНИЕ: проблема была в iptables, не настроенном для приема трафика через порт 443. Я принимаю ответ EightBitTony, так как его конфигурация работала отлично, как только я исправил свои iptables.

1 ответ

Решение

Эта настройка работает для меня (и это стандартная версия Debian, почти без изменений).

В ports.conf

NameVirtualHost *:80
Listen 80

<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.
    Listen 443
</IfModule>

<IfModule mod_gnutls.c>
    Listen 443
</IfModule>

Это соответствует твоему.

Затем для каждого из моих виртуальных хостов (не-SSL),

<VirtualHost *:80>

        ServerName domain.example:80
        DocumentRoot "/some/path/to/html"
        UseCanonicalName Off
        <Directory "/some/path/to/html">
            ... stuff ....
        </Directory>

</VirtualHost>

и SSL

<VirtualHost *:443>

        ServerName ssl-domain.example:443
        UseCanonicalName Off
        DocumentRoot "/some/path/to/ssl-html"

        <Directory "/some/path/to/ssl-html">
           ... stuff ...
        </Directory>

        SSLEngine on
        SSLCertificateFile    /etc/ssl/certs/ssl-cert-snakeoil.pem
        SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

</VirtualHost>

Я думаю, что вы должны использовать UseCanonicalName Off так что сервер генерирует URL-адреса на основе данных, передаваемых клиентом, поэтому он получает правильный порт и имя. Полная информация здесь.

Наконец, вы должны убедиться, что соответствующий модуль SSL включен, что, я думаю, в вашем случае так и есть (но это здесь для полноты).

Обновление: Помимо прослушивания на правильных портах, вы также должны убедиться, что iptables не блокирует и не сбрасывает трафик SSL через порт 443.

Другие вопросы по тегам