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:
Еще одна неудачная попытка, аналогичная той, что была опубликована
По сути, я получаю "Страница недоступна", когда открываю 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.