Правильная настройка виртуальных хостов SSL

Я установил SSL-сертификат на свой экземпляр Ubuntu EC2, и мне нужен один из веб-сайтов, размещенных на этом экземпляре, чтобы он был доступен через https.

У меня есть несколько веб-сайтов, размещенных на одном IP-адресе через виртуальные хосты. Однако мне нужен только один веб-сайт для доступа через https.

Я уверен в следующем:

  • SSL сертификат правильно установлен
  • Порт 443 открыт на EC2

Я уверен в этом, потому что, когда я попробовал следующую конфигурацию виртуального хоста в /etc/apache2/sites-enabled/mysslsite, я мог получить доступ к сайту через https. Проблема заключалась в том, что все остальные сайты были недоступны, потому что к ним также требовался доступ ТОЛЬКО через https. Ниже приведен файл конфигурации виртуального хоста:

<VirtualHost *>

    ServerAdmin support@example.com

        DocumentRoot    /var/www/mysslwebsite
        ServerName  www.mysslwebsite.com
        ServerAlias     mysslwebsite.com
        <Directory  /var/www/mysslwebsite>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride all
            Order allow,deny
            allow from all
        </Directory>

        <Directory />
            Options FollowSymLinks
            AllowOverride all
        </Directory>

    SSLEngine on
    SSLCertificateFile    /etc/ssl/apache2/mycertificate.com.crt
    SSLCertificateKeyFile /etc/ssl/apache2/mycertificate.key

    ErrorLog /var/log/apache2/error.log
    LogLevel warn

    CustomLog /var/log/apache2/access.log combined
    ServerSignature On

</VirtualHost>

При такой конфигурации, хотя она находится в этой конкретной конфигурации виртуального хоста mysslwebsite, все остальные веб-сайты не будут загружаться через стандартный http и отображать следующее сообщение при доступе через http:

Bad Request

Your browser sent a request that this server could not understand.
Reason: You're speaking plain HTTP to an SSL-enabled server port.
Instead use the HTTPS scheme to access this URL, please.
Hint: https://www.myothersite.com/

Кто-нибудь знает, как я могу это исправить?

Спасибо

-------РЕДАКТИРОВАТЬ-------

Я попробовал следующие виртуальные хосты:

NameVirtualHost *:80
NameVirtualHost *:443

<VirtualHost *:80>

    ServerAdmin support@email.com

        DocumentRoot    /var/www/mysslsite
        ServerName  www.mysslsiste.com
        ServerAlias     mysslsite.com
        <Directory  /var/www/mysslsite>

            Options Indexes FollowSymLinks MultiViews
            AllowOverride all
            Order allow,deny
            allow from all
        </Directory>

        <Directory />
            Options FollowSymLinks
            AllowOverride all
        </Directory>

    ErrorLog /var/log/apache2/error.log
    LogLevel warn

    CustomLog /var/log/apache2/access.log combined
    ServerSignature On

</VirtualHost>

<VirtualHost *:443>
        ServerAdmin support@email.com

        DocumentRoot    /var/www/mysslsist
        ServerName  www.mysslsist.com
        ServerAlias     mysslsist.com
        <Directory  /var/www/mysslsist>

            Options Indexes FollowSymLinks MultiViews
            AllowOverride all
            Order allow,deny
            allow from all
        </Directory>

        <Directory />
            Options FollowSymLinks
            AllowOverride all
        </Directory>

    ErrorLog /var/log/apache2/error.log
    LogLevel warn

    CustomLog /var/log/apache2/access.log combined
    ServerSignature On

    SSLEngine on
    SSLCertificateFile    /etc/ssl/apache2/certificate.com.crt
    SSLCertificateKeyFile /etc/ssl/apache2/certificate.key

</VirtualHost>

#Another virtual host with another site
<VirtualHost *>

    ServerAdmin support@email.com

        DocumentRoot    /var/www/myothersite
        ServerName  www.myothersite.com
        ServerAlias     myothersite.com
        <Directory  /var/www/myothersite>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride all
            Order allow,deny
            allow from all
        </Directory>

        <Directory />
            Options FollowSymLinks
            AllowOverride all
        </Directory>

    ErrorLog /var/log/apache2/error.log
    LogLevel warn

    CustomLog /var/log/apache2/access.log combined
    ServerSignature On

</VirtualHost>

Однако я не смог получить доступ к сайту через SSL. Я мог получить к нему доступ через http, хотя.

Apache выдает следующие предупреждения при перезапуске:

NameVirtualHost *: 443 не имеет виртуальных хостов NameVirtualHost *:80 не имеет виртуальных хостов

Это сбивает с толку, так как порт 80 имеет около 10 виртуальных хостов.

1 ответ

Решение

Мне кажется, что вы не указываете порт 443 или порт 80 для виртуального хоста. Таким образом, все движется к виртуальному хосту, который настроен для SSL. Поэтому http-трафик не принимается, так как он настроен на прием только SSL. Попробуй это

NameVirtualHost *:80

<VirtualHost *:80>
   ServerName blah
   DocumentRoot /var/www/html/

</VirtualHost>


<VirtualHost *:443>

 ...
 - your config here -
 ...

</VirtualHost>

Вы могли бы даже сделать перенаправление для виртуального хоста, работающего на порту 80. Может быть что-то вроде этого:

Redirect permanent / https://<URL>
Другие вопросы по тегам