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

Конфигурация нескольких SSL в Apache2 не работает

Я установил два сертификата ssl на apache2, но когда я вхожу с доменом, первый сертификат работает, и когда я вхожу с ipadress сервера, он показывает мне тот же сертификат, который у меня есть в домене. Я отключил хосты default и default-ssl. Вот мои виртуальные хосты:

<VirtualHost *:443>
    ServerAdmin mail@example.com
    ServerName example.com:443
    ServerAlias www.example.com:443
    DocumentRoot /var/www/example.com/public_html
    ErrorLog /var/log/apache2/error-log.log
    CustomLog /var/log/apache2/custom-log.log common
    DirectoryIndex index.html index.php index.xhtml index.htm
    #Allow phpmyadmin /usr/share/phpmyadmin
    <Directory /usr/share/phpmyadmin>
        Options -Indexes FollowSymLinks
        AllowOverride None
        Order deny,allow
        allow from all
    </Directory>
    <Directory />
        Options -Indexes FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
    </Directory>
    <Directory /var/www/>
        Options FollowSymLinks MultiViews -Includes -ExecCGI -Indexes
        AllowOverride All
        Order allow,deny
        allow from all
        LimitRequestBody 104857600
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    LogLevel warn
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

    SSLEngine on
    SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
    SSLCertificateFile /etc/apache2/ssl/first-ssl.crt
    SSLCertificateKeyFile /etc/apache2/ssl/first-ssl.key
    SSLCertificateChainFile /etc/apache2/ssl/first-ssl.crt
</VirtualHost>


<VirtualHost *:443>
    ServerAdmin example@example.com
    ServerName 188.226.208.247
    DocumentRoot /var/www/
    SSLEngine on
    SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
    SSLCertificateFile /etc/apache2/ssl/second-ssl.crt
    SSLCertificateKeyFile /etc/apache2/ssl/second-ssl.key
</VirtualHost>  

Пожалуйста, проверьте второй ssl, для которого был приобретен домен, и введите домен вместо IP-адреса.

ServerName 188.226.208.247 

change to

ServerName domainname .

Как упоминается в Вики-сайт Apache Common Misconfigurations

"... Из-за природы SSL информация о хосте не используется при установке SSL-соединения. Apache всегда будет использовать сертификат виртуального хоста по умолчанию, который является первым определенным виртуальным хостом для виртуальных хостов на основе имен. Хотя это не означает, что вы никогда не сможете получить доступ ко второму виртуальному хосту, это означает, что ваши пользователи всегда будут получать предупреждение о несоответствии сертификата при попытке доступа к some.domain2.com ... "

И из апача документы:

"... Причина в том, что протокол SSL представляет собой отдельный уровень, который инкапсулирует протокол HTTP. Таким образом, сеанс SSL - это отдельная транзакция, которая происходит до начала сеанса HTTP. Сервер получает запрос SSL на IP-адрес X и порт Y (обычно 443). Поскольку запрос SSL не содержал поля Host :, сервер не мог решить, какой виртуальный хост SSL использовать. Обычно он просто использовал первый найденный, соответствующий порту и IP-адресу. адрес указан. ... "

Возможно иметь несколько сертификатов SSL с одним IP-адресом с SNI (Указание имени сервера), но только в самых последних версиях Apache и OpenSSL (с Apache v2.2.12 и OpenSSL v0.9.8j).

Коротко:

Если вы хотите использовать разные сертификаты SSL для виртуальных хостов, вам необходимо указать разные IP-адреса для каждого из них или использовать SNI.