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

Как запретить другим нескольким доменам VirtualHosts Apache 2.2 доступ к https (SSL_ERROR_BAD_CERT_DOMAIN) с помощью SNI?

Я запускаю Apache 2.2 на Ubuntu 14.04.4 LTS на сервере Linode. У меня есть несколько доменов, размещенных на этом компьютере (только с 1 IP-адресом).

У меня есть домен tbw.com, размещенный здесь, для которого у меня есть сертификат SSL, и для которого я хочу, чтобы все http://tbw.com и http://www.tbw.com запросы, которые будут перенаправлены на https://www.tbw.com (это происходит в текущей конфигурации)

У меня также есть rf.com и другие сайты, которые отлично работают как http://rf.com и http://www.rf.com

Однако, когда я пытаюсь получить доступ https://www.rf.com, выдает ошибку:

Your connection is not secure
...
www.rf.com uses an invalid security certificate. 

The certificate is only valid for the following names: www.tbw.com, tbw.com 
Error code: SSL_ERROR_BAD_CERT_DOMAIN
  1. Я не хочу, чтобы это происходило - я бы предпочел, чтобы он показывал стандартную / ожидаемую ошибку «Ошибка безопасного соединения» для доменов без SSL.
  2. Могу ли я установить другие домены с сертификатами SSL на том же компьютере (с тем же IP-адресом)?

Я просмотрел следующие сообщения, но думаю, что ответы устарели, потому что теперь существует SNI (указание имени сервера).

Несколько доменов с SSL на одном IP

Как предотвратить доступ к https: // из доменов без сертификата?

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

/etc/apache2/apache2.conf

...
<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>
...

/etc/apache2/ports.conf

NameVirtualHost *:80
NameVirtualHost *:443

Listen 80
...

/etc/apache2/sites-available/tbw.com.conf

<VirtualHost *:80>
   ServerName tbw.com
   ServerAlias www.tbw.com
   DocumentRoot /var/www/html/tbw.com/public_html
   Redirect permanent / https://www.tbw.com/
</VirtualHost>

<IfModule mod_ssl.c>
    <VirtualHost www.tbw.com:443>
        ServerAdmin yo@tbw.com
        ServerName www.tbw.com
        DocumentRoot /var/www/html/tbw.com/public_html

        # Log file locations
        LogLevel warn
        ErrorLog  /var/www/html/tbw.com/log/error.log
        CustomLog /var/www/html/tbw.com/log/access.log combined

        SSLEngine on
        SSLCertificateFile /etc/apache2/ssl/tbw.com/www_tbw_com.crt
        SSLCertificateKeyFile /etc/apache2/ssl/tbw.com/tbw.key
        SSLCertificateChainFile  /etc/apache2/ssl/tbw.com/www_tbw_com.ca-bundle
        <FilesMatch "\.(cgi|shtml|phtml|php)$">
                        SSLOptions +StdEnvVars
        </FilesMatch>
        <Directory /usr/lib/cgi-bin>
                        SSLOptions +StdEnvVars
        </Directory>
        BrowserMatch "MSIE [2-6]" \
                        nokeepalive ssl-unclean-shutdown \
                        downgrade-1.0 force-response-1.0
        BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
    </VirtualHost>
</IfModule>

Я не хочу, чтобы это происходило - я бы предпочел, чтобы он показывал стандартную / ожидаемую ошибку «Ошибка безопасного соединения» для доменов без SSL.

В этом случае вы должны настроить apache так, чтобы он не принимал клиентов, не поддерживающих SNI, т.е. SSLStrictSNIVHostCheck on. В этом случае виртуальные хосты без настроенного сертификата должны вызывать ошибку у клиента, например, неверное имя сервера или ошибку рукопожатия (в зависимости от браузера).

Могу ли я установить другие домены с сертификатами SSL на том же компьютере (с тем же IP-адресом)?

Пока клиент использует SNI (что и делают все современные браузеры), это должно быть возможно.