Domínios e subdomínios virtualhosts com diferentes certificados SSL

2


Eu tenho um domínio: www.example.com e preciso que este domínio seja acessível tanto por https como por http.
Eu tenho um certificado (GeoTrust) que protege www.example.com e exemplo. com.

Também preciso proteger app.example.com.
app.example.com é algo que precisa ser acessado APENAS via https, mas não precisa de um certificado adequado: um auto-assinado é o suficiente.

Eu tentei muitas configurações diferentes (mesmo usando o mesmo certificado para o domínio principal e o subdomínio), mas nada funcionou!
A configuração a seguir é a última que tentei, mas o resultado é que se eu me conectar ao aplicativo. example.com, ele me diz que a conexão não é confiável e, uma vez aceita, ela me redireciona para www.example.com!

Qualquer ajuda? obrigada.

<VirtualHost *:80>
DocumentRoot "/var/websiteexample/public/www"
ServerName www.example.com
ServerAlias example.com
<Directory "/var/websiteexample/public/www">
allow from all
Options +Indexes
</Directory>
</VirtualHost>

<VirtualHost *:443>
DocumentRoot "/var/websiteexample/public/www"
ServerName www.example.com
ServerAlias example.com
SSLEngine on
SSLCertificateFile /root/www.example.com.crt
SSLCertificateKeyFile /root/www.example.com.key
<Directory "/var/websiteexample/public/www">
allow from all
Options +Indexes
</Directory>
</VirtualHost>

<VirtualHost *:443>
DocumentRoot "/path/to/another/app"
ServerName app.example.com
SSLEngine on
SSLCertificateFile /root/app.example.com.pem
<Directory "/path/to/another/app">
allow from all
Options +Indexes
</Directory>
</VirtualHost>
    
por tobia.zanarella 24.05.2012 / 08:43

2 respostas

4
  • adicionado SSLEngine on ao serverconfig
  • adicionado SSLStrictSNIVHostCheck on ao serverconfig - SNI para vários certificados, excluir clientes não compatíveis com SNI
  • adicionado SSLCertificateKeyFile /root/app.example.com.key - você precisa de uma chave privada para ambos os vhosts

Aqui está a nova configuração:

SSLEngine on
SSLStrictSNIVHostCheck on
SSLProtocol -ALL +SSLv3 +TLSv1
SSLCipherSuite ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:-MEDIUM

<VirtualHost *:80>
    DocumentRoot "/var/websiteexample/public/www"
    ServerName www.example.com
    ServerAlias example.com
    <Directory "/var/websiteexample/public/www">
        allow from all
        Options +Indexes
    </Directory>
</VirtualHost>

<VirtualHost *:443>
    DocumentRoot "/var/websiteexample/public/www"
    ServerName www.example.com
    ServerAlias example.com
    #You might also need: SSLCertificateChainFile 
    SSLCertificateFile /root/www.example.com.crt
    SSLCertificateKeyFile /root/www.example.com.key
    <Directory "/var/websiteexample/public/www">
        allow from all
        Options +Indexes
    </Directory>
</VirtualHost>

<VirtualHost *:443>
    DocumentRoot "/path/to/another/app"
    ServerName app.example.com
    SSLCertificateFile /root/app.example.com.pem
    SSLCertificateKeyFile /root/app.example.com.key
    <Directory "/path/to/another/app">
        allow from all
        Options +Indexes
    </Directory>
</VirtualHost>
    
por 24.05.2012 / 09:24
-1

Você não pode fazer vhosting baseado em nome com SSL porque o nome vem do cabeçalho "Host:", que é parte do que é criptografado. Você precisaria escolher a chave antes de saber qual chave escolher.

Geralmente, um usa um endereço IP adicional para cada par de chaves exclusivo. Você pode encontrar alguns ótimos exemplos e explicações no link

    
por 24.05.2012 / 09:24