apache: vários vhosts ssl no mesmo computador e no mesmo ip

1

Eu tenho um servidor Linux com o Gentoo Linux de 64 bits.

Eu tenho o Apache 2.2.17 instalado e tenho vários vhosts configurados nele que funcionam corretamente. Quando tento adicionar vhosts SSL, o apache detecta apenas o primeiro.

É assim que cada host virtual é configurado:

<VirtualHost *:443>
    ServerName myserver
    serverAlias [server name].tux-in.com
    Include /etc/apache2/vhosts.d/magento_vhost.include
    ErrorLog /var/log/apache2/[server]_ssl_error_log

    <IfModule log_config_module>
            TransferLog /var/log/apache2/[server]_ssl_access_log
    </IfModule>

    SSLEngine on

    SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL

    SSLCertificateFile /etc/ssl/apache2/server.crt

    SSLCertificateKeyFile /etc/ssl/apache2/server.key

    <FilesMatch "\.(cgi|shtml|phtml|php)$">
            SSLOptions +StdEnvVars
    </FilesMatch>

    <Directory "/var/www/localhost/cgi-bin">
            SSLOptions +StdEnvVars
    </Directory>

    <IfModule setenvif_module>
            BrowserMatch ".*MSIE.*" \
                    nokeepalive ssl-unclean-shutdown \
                    downgrade-1.0 force-response-1.0
    </IfModule>

    <IfModule log_config_module>
            CustomLog /var/log/apache2/ssl_request_log \
                    "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
    </IfModule>
</VirtualHost>

este é o arquivo de inclusão:

ServerAdmin [email protected]

DocumentRoot "/var/www/[server dir]"

<Directory "/var/www/[server dir]">
    Options Indexes FollowSymLinks


    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

no seguinte URL link Eu li que, em relação aos hosts virtuais SSL, o apache buscará apenas a primeira configuração ssl vhost.

Eu tenho um servidor linux com dezenas de domínios encaminhados para o meu ip e cada um tem seu próprio certificado ssl vaild. Como posso configurar meu sistema para permitir isso? preciso realmente alocar meu endereço IP para resolver esse problema?

obrigado!

    
por ufk 04.04.2011 / 15:38

3 respostas

4

O Apache "detectará" e servirá qualquer número de vhosts em uma porta SSL. O problema é, especificamente, com qual certificado usar.

Pense em como um vhost é selecionado; o cliente transmite um cabeçalho Host: como parte da solicitação que envia. Um túnel SSL já está estabelecido no momento em que as informações são enviadas ao servidor, portanto, é impossível para o Apache selecionar um certificado com base em algo que ele não sabe quando o certificado é selecionado. Nesta situação, sempre seleciona o certificado no primeiro vhost para carregar.

No entanto, quando o cliente e o servidor suportam a indicação de nome de servidor TLS, o cliente pode indicar como parte da negociação de sessão qual nome de host vai atingir, permitindo que o Apache use o certificado correto. Seu servidor deve suportá-lo (contanto que sua biblioteca OpenSSL seja nova o suficiente, mas o Apache 2.2.17 é bom), então é uma questão de suporte ao cliente.

Se você ainda tem clientes no Windows XP, então está fora; Suas melhores opções são um certificado curinga se seus sites compartilharem um domínio pai ou um certificado de nome alternativo de assunto, caso contrário.

    
por 04.04.2011 / 16:15
2

Considere o que o apache faz:

Ele obtém uma nova conexão com um determinado IP e número de porta e precisa configurar uma conexão SSL; para isso, precisa de um certificado SSL. Como é que ele deve escolher entre vários certificados?

Assim, cada combinação de IP / porta pode servir apenas com um certificado SSL. E se você também quiser usar a porta https padrão, esse é um certificado por IP.

    
por 04.04.2011 / 15:50
1

Na minha configuração, tenho múltiplos <VirtualHost *:443> seções com diferentes ServerName correspondentes aos endereços dos sites.

Para cada um você tem uma seção de configuração SSL, com certificados, etc ...

Para o navegador recente o suficiente, ele deve funcionar. (No win XP, ele não funcionará devido a bibliotecas de criptografia que não manipulam a solicitação múltipla de hosts SSL)

Se o seu pacote de ssl e apache for recente o suficiente, ele deve funcionar.

Relacionados: SF onde você verá exemplo de config e informações sobre o SNI (Indicação do Nome do Servidor)

    
por 04.04.2011 / 16:09