Я установил сервер 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>
См. Эту страницу под названием Использование нескольких сертификатов SSL в Apache с одним IP-адресом.
Убедитесь, что ваши виртуальные хосты настроены правильно, так что каждый виртуальный хост привязывается только к одному 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 будет добавляться предупреждение.