Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Apache: SSL-сертификат на ServerAlias  (Прочитано 959 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн @enchanter

  • Автор темы
  • Новичок
  • *
  • Сообщений: 41
    • Просмотр профиля
Apache: SSL-сертификат на ServerAlias
« : 25 Сентября 2014, 10:00:10 »
Добрый день, уважаемые!
Требуется комментарий человека, хорошо понимающего механизм работы Apache
Задача в следующем. Есть wsgi-приложение на питоне, работающее на домене domain1.com. Требуется создать ссылку на это приложение, чтобы оно работало ещё и на домене domain2.com. Проблема в том, что в один контейнер VirtualHost не вставить два сертификата, и ServerAlias оказывается здесь не при делах. Если создать такой конфиг:


Код: (xml) [Выделить]
<VirtualHost 1.2.3.4:443>
    ServerName domain1.com
    ServerAlias domain2.com
    WSGIDaemonProcess approc user=www-data group=www-data threads=15 processes=10 shutdown-timeout=30B
    WSGIScriptAlias / /home/www/web/appl.new/appl.wsgi
    WSGICallableObject app
    WSGIScriptReloading On
    <Directory /home/www/web/appl.new>
        WSGIProcessGroup approc
        WSGIApplicationGroup %{GLOBAL}
        Order deny,allow
        Allow from all
        Require all granted
    </Directory>
    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/domain1.crt
    SSLCertificateKeyFile /etc/ssl/private/domain1.key
</VirtualHost>

то при входе на https://domain1.com всё нормально, а если https://domain2.com - браузер пищит о недостоверном сертификате. Ну, что напрашивается: создать 2 контейнера. Если сделать так:

Код: (xml) [Выделить]
<VirtualHost 1.2.3.4:443>
    ServerName domain1.com
    WSGIDaemonProcess approc user=www-data group=www-data threads=15 processes=10 shutdown-timeout=30B
    WSGIScriptAlias / /home/www/web/appl.new/appl.wsgi
    WSGICallableObject app
    WSGIScriptReloading On
    <Directory /home/www/web/appl.new>
        WSGIProcessGroup approc
        WSGIApplicationGroup %{GLOBAL}
        Order deny,allow
        Allow from all
        Require all granted
    </Directory>
    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/domain1.crt
    SSLCertificateKeyFile /etc/ssl/private/domain1.key
</VirtualHost>
<VirtualHost 1.2.3.4:443>
    ServerName domain2.com
    WSGIDaemonProcess approc2 user=www-data group=www-data threads=15 processes=10 shutdown-timeout=30B
    WSGIScriptAlias / /home/www/web/appl.new/appl.wsgi
    WSGICallableObject app
    WSGIScriptReloading On
    <Directory /home/www/web/appl.new>
        WSGIProcessGroup approc2
        WSGIApplicationGroup %{GLOBAL}
        Order deny,allow
        Allow from all
        Require all granted
    </Directory>
    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/domain2.crt
    SSLCertificateKeyFile /etc/ssl/private/domain2.key
</VirtualHost>

то всё работает. Но возникают вопросы:
1. Единственное ли это решение?
2. Нет ли подводных камней? Первое, что приходит в голову: например, при изменении исходников приложение рестартует и перекомпилирует py-файлы. При значительной посещаемости, не случится ли какой-нибудь конфликт, если оба процесса попытаются одновременно рекомпилировать один и тот же файл и сохранить его на диск?
3. Ну и вообще, ощущение такое, будто не по феншую...

Оффлайн .ubuntufan

  • Активист
  • *
  • Сообщений: 638
    • Просмотр профиля
Re: Apache: SSL-сертификат на ServerAlias
« Ответ #1 : 25 Сентября 2014, 10:41:39 »
Сертификат выдается для одного домена (возможен wiildcard для доменов третьего уровня), у вас же два домена второго уровня соответственно каждому домену должен соответствовать свой сертификат и private key.

По поводу перекомпиляции - в самом худшем случае байткод перезапишется несколько раз, но ничего страшного в этом нет т.к. он идентичен для каждого экземпляра приложения.

Еще чтобы не дублировать одни и те же директивы их можно вынести в отдельный файл и подключать с помощью Include.

<VirtualHost 1.2.3.4:443>
    ServerName domain1.com
    Include common/wsgi.conf
    SSLCertificateFile /etc/ssl/certs/domain1.crt
    SSLCertificateKeyFile /etc/ssl/private/domain1.key
</VirtualHost>
<VirtualHost 1.2.3.4:443>
    ServerName domain2.com
    Include common/wsgi.conf
    SSLCertificateFile /etc/ssl/certs/domain2.crt
    SSLCertificateKeyFile /etc/ssl/private/domain2.key
</VirtualHost>

Оффлайн @enchanter

  • Автор темы
  • Новичок
  • *
  • Сообщений: 41
    • Просмотр профиля
Re: Apache: SSL-сертификат на ServerAlias
« Ответ #2 : 25 Сентября 2014, 11:09:10 »
Ну, скорее всего, вы правы.

Еще чтобы не дублировать одни и те же директивы их можно вынести в отдельный файл и подключать с помощью Include.

Да, верно, было бы красиво, но здесь такой нюанс:
Код: (xml) [Выделить]
WSGIDaemonProcess approc2 user=www-data group=www-data threads=15 processes=10 shutdown-timeout=30B
и
Код: (xml) [Выделить]
WSGIProcessGroup approc2имеют разные параметры: approc и approc2, никак не объединить в общий файл, каша получится.
« Последнее редактирование: 25 Сентября 2014, 11:12:13 от @enchanter »

 

Страница сгенерирована за 0.018 секунд. Запросов: 22.