Назад | Перейти на главную страницу

SSL вызывает одно и то же содержание в нескольких доменах

Я установил сервер Debian LAMP, на котором размещаю несколько веб-сайтов. Насколько я знаю, я могу использовать SSL только на одном из них, если я хочу использовать SSL на двух или более сайтах, мне придется добавить еще один IP - пока все хорошо.

Проблема в том, что всякий раз, когда я печатаю https://siteone.com или https://sitetwo.com он всегда отображает контент из: https://siteone.com. Я бы предпочел, чтобы он отображал какое-то сообщение об ошибке или что-то еще, но абсолютно не отображал контент моего основного сайта (где я хочу, чтобы SSL работал).

Примечание: мой веб-сервер Debian использует ispconfig в качестве панели управления.

Если совет Стивена вам не подходит, убедитесь, что у вас также есть следующая строка в вашем конфигурационном файле apache:

NameVirtualHost *:443

Кроме того, ФРБ прав. Вы МОЖЕТЕ использовать SSL на любом количестве этих виртуальных машин. Просто поместите информацию о конфигурации SSL в <VirtualHost></VirtualHost> кодовый блок.

Что-то вроде этого (также обратите внимание, что нет необходимости привязываться к определенным IP-адресам при использовании именованных хостов):

## SSL (HTTPS) PORT 443
Listen 443
NameVirtualHost *:443

LoadModule ssl_module modules/mod_ssl.so
SSLPassPhraseDialog  builtin
SSLSessionCache         shmcb:/var/cache/mod_ssl/scache(512000)
SSLSessionCacheTimeout  300
SSLMutex default
SSLRandomSeed startup file:/dev/urandom  256
SSLRandomSeed connect builtin
SSLCryptoDevice builtin

<VirtualHost *:443>
  ServerName host1.com

  SSLEngine on
  SSLOptions +StrictRequire
  SSLProtocol -all +TLSv1 +SSLv3
  SSLCipherSuite HIGH:MEDIUM:!aNULL:+SHA1:+MD5:+HIGH:+MEDIUM
  SSLCertificateFile    /etc/httpd/ssl/host1.crt
  SSLCertificateKeyFile /etc/httpd/ssl/host1.key
  SSLVerifyClient none
  SSLProxyEngine off

  SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
  CustomLog logs/ssl_request_log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

  DocumentRoot /var/www/host1/

  <Directory "/var/www/host1/">
    Options Indexes FollowSymLinks
    AllowOverride All
    Order Allow,deny
    Allow from all
  </Directory>

</VirtualHost>


<VirtualHost *:443>
  ServerName host2.com

  SSLEngine on
  SSLOptions +StrictRequire
  SSLProtocol -all +TLSv1 +SSLv3
  SSLCipherSuite HIGH:MEDIUM:!aNULL:+SHA1:+MD5:+HIGH:+MEDIUM
  SSLCertificateFile    /etc/httpd/ssl/host2.crt
  SSLCertificateKeyFile /etc/httpd/ssl/host2.key
  SSLVerifyClient none
  SSLProxyEngine off

  SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
  CustomLog logs/ssl_request_log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

  DocumentRoot /var/www/host2/

  <Directory "/var/www/host2/">
    Options Indexes FollowSymLinks
    AllowOverride All
    Order Allow,deny
    Allow from all
  </Directory>

</VirtualHost>

Убедитесь, что ваши виртуальные хосты настроены правильно, так что каждый виртуальный хост привязывается только к одному IP-адресу. В Документация Apache для виртуального хостинга на основе IP говорит, что ваши виртуальные хосты должны выглядеть примерно так:

<VirtualHost 192.168.0.1:443>
ServerAdmin webmaster@smallco.example.com
DocumentRoot /groups/smallco/www
ServerName smallco.example.com
ErrorLog /groups/smallco/logs/error_log
TransferLog /groups/smallco/logs/access_log
</VirtualHost>

<VirtualHost 192.168.0.2:443>
ServerAdmin webmaster@baygroup.example.org
DocumentRoot /groups/baygroup/www
ServerName baygroup.example.com
ErrorLog /groups/baygroup/logs/error_log
TransferLog /groups/baygroup/logs/access_log
</VirtualHost>

Первый виртуальный хост, указанный в вашей конфигурации apache, является хостом по умолчанию. Добавьте поддельный перед первыми двумя, чтобы убедиться, что вы действительно соответствуете своим виртуальным хостам, а не просто слепо падаете на первый. Вот более полная статья о такой установке от IBM: http://www-01.ibm.com/support/docview.wss?uid=swg21045922

Фактически вы можете использовать несколько сайтов SSL на одном IP-адресе без использования SNI. (Основная) загвоздка в том, что вы должны использовать один и тот же сертификат, который должен иметь все необходимые домены в качестве альтернативных имен субъектов. (Это приведет к дополнительным затратам на сертификат.) Подразумевается, что все сайты принадлежат одной и той же организации.

Apache2 обрабатывает SSL в два этапа. Первый этап включает проверку наличия оператора «SSLEngine on» в (первом) блоке виртуального хоста по умолчанию для IP-адреса, а затем запуск SSL-соединения. Второй этап включает проверку директив ServerName / ServerAlias ​​до определения правильного виртуального хоста.

Таким образом, вам не нужно дублировать директивы SSL * на каждом виртуальном хосте, но это помогает привлечь внимание людей к тому факту, что это сайт SSL. (В противном случае они должны были бы заметить номер порта.)

Вторичная уловка заключается в том, что при каждом запуске Apache в error_log будет добавляться предупреждение.