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

Настройка хостов SSL для доступа к HTTP / HTTPS в нескольких доменах?

У меня проблемы с настройкой нескольких ssl-хостов на моем сервере Apache (CentOS). Первоначально я думал, что проблема заключается только в одном IP-адресе, поэтому, как только это было обнаружено, я попросил нашего поставщика сервера добавить еще один IP-адрес, что они и сделали.

Однако у меня все еще есть проблемы. Мы хотим иметь доступ по протоколам http и https для обоих наших доменов, domain1.com и domain2.com, а также иметь различные поддомены.

У меня есть сертификаты, ключи, промежуточные сертификаты на машине (для обоих доменов), и с ними все в порядке.

Ситуация такова, что все HTTP-сайты работают правильно, и первый домен SSL работает, но когда я пытаюсь посетить второй домен через HTTPS, я получаю ошибку безопасности (говорит неправильный сертификат, как показывает сертификат домена 1!).

Кроме того, страницы, обслуживаемые доменом 2, не являются правильными oes (то есть не тем, что говорит DocumentRoot!). Похоже, что по умолчанию используется первая конфигурация ssl для всех доменов / IPS.

Файлы конфигурации:

THis is an excerpt from httpd.conf
####
NameVirtualHost **.**.**.27:80

<VirtualHost **.**.**.27:80>
    DocumentRoot /var/www/html/ADDIR
    ServerName domain1.com
    ErrorDocument 404 /var/www/html/404.html
</VirtualHost>

 # # There are other virtualhosts for other ServerNames & DocumentRoots too but they're otherwise identical to above. ###

<Location "/usage">
</Location>

NameVirtualHost **.**.**.41:80

<VirtualHost **.**.**.41:80>
DocumentRoot /var/www/html/SOC
ServerName domain2.com
</VirtualHost>

# # #
This is an excerpt from ssl.conf

<VirtualHost **.**.**.27:443>
DocumentRoot "/var/www/html/ADDIR/"
ServerName domain1.com:443
ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW

#certificates
SSLCertificateFile /ssl/server.crt
SSLCertificateKeyFile /ssl/server.key
SSLCACertificateFile /ssl/intermediate.crt

<Files ~ "\.(cgi|shtml|phtml|php3?)$">
    SSLOptions +StdEnvVars
</Files>
<Directory "/var/www/cgi-bin">
 SSLOptions +StdEnvVars
</Directory>

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"
</VirtualHost>                                  

<VirtualHost **.**.**.41:443>
     SSLEngine On
     SSLCertificateFile /ssl/SD/server.crt
     SSLCertificateKeyFile /ssl/SD/server.key
     SSLCACertificateFile /ssl/SD/intermediate.crt

     ServerAdmin info@mydomain.com
     ServerName domain2.com
     DocumentRoot /var/www/html/SOC/
</VirtualHost>

Просто сравнивая определения двух виртуальных хостов https, я вижу расхождения.

На виртуальном хосте .27 у вас есть

ServerName domain1.com:443

SSLProtocol все -SSLv2

SSLCipherSuite ALL:! ADH:! EXPORT:! SSLv2: RC4 + RSA: + HIGH: + MEDIUM: + LOW

и на вашем виртуальном хосте .41 у вас есть

ServerName domain2.com

Я с готовностью признаю, что не понимаю всю конфигурацию SSL, так что, возможно, это так, как задумано. Но у вас один работает правильно (я предполагаю, что хост .27), а другой настроен по-другому.