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

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

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

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

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

Я уверен в этом, потому что, когда я попробовал следующую конфигурацию виртуального хоста в / 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 не имеет VirtualHosts NameVirtualHost *: 80 не имеет VirtualHosts

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

Мне кажется, что вы не указываете порт 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>