Configuração adequada de SSL de Hosts Virtuais

1

Eu instalei um certificado SSL na minha instância do Ubuntu EC2 e preciso que um dos sites hospedados nesta instância esteja acessível via https.

Eu tenho vários sites hospedados no mesmo IP através de Hosts Virtuais. No entanto, eu só preciso de um site para ser acessível via https.

Tenho certeza sobre o seguinte:

  • O certificado SSL está instalado corretamente
  • A porta 443 está aberta no EC2

Eu tenho certeza disso porque quando eu tentei a seguinte configuração do Host Virtual no / etc / apache2 / sites-enabled / mysslsite, eu pude acessar o site via https. O problema era que todos os outros sites foram desativados porque também precisavam ser acessados SOMENTE através de https. O seguinte é o arquivo de configuração do host virtual:

<VirtualHost *>

    ServerAdmin [email protected]

        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>

Com esta configuração, embora esteja localizada nesta configuração de host virtual mysslwebsite específica, todos os outros sites não serão carregados por meio do http padrão e mostrarão a seguinte mensagem quando acessados por meio de 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/

Alguém sabe como posso consertar isso?

Obrigado

------- EDITAR -------

Eu tentei os seguintes hosts virtuais:

NameVirtualHost *:80
NameVirtualHost *:443

<VirtualHost *:80>

    ServerAdmin [email protected]

        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 [email protected]

        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 [email protected]

        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>

No entanto, não consegui acessar o site via SSL. Eu poderia acessá-lo via http embora.

O Apache mostrou os seguintes avisos ao reiniciar:

NameVirtualHost *: 443 não tem o VirtualHosts NameVirtualHost *: 80 não tem VirtualHosts

Isso é confuso, pois a porta 80 tem cerca de 10 hosts virtuais.

    
por seedg 20.12.2012 / 12:41

1 resposta

4

Parece-me que você não está especificando uma porta 443 ou uma porta 80 para o host virtual. Então, tudo está indo em direção ao host virtual configurado para SSL. Portanto, o tráfego HTTP não está sendo aceito, pois está configurado para aceitar somente SSL. Tente isto

NameVirtualHost *:80

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

</VirtualHost>


<VirtualHost *:443>

 ...
 - your config here -
 ...

</VirtualHost>

Você pode até fazer um redirecionamento para o host virtual que está sendo executado na porta 80. Talvez algo assim:

Redirect permanent / https://<URL>
    
por 20.12.2012 / 13:06