Pergunta

Eu estou tentando configurar nossos servidores para permitir o tráfego através de SSL. Estou ciente de que SSL não funciona com o nome virtual do host, mas temos todos os nossos servidores apache em máquinas virtuais com IPs privados dedicados. Nós temos uma máquina virtual primária que tem configuração mod_proxy para rotear o tráfego para as VMs apropriados.

No entanto, a fim de encaminhar o tráfego HTTPS precisamos ter o certificado instalado no proxy, bem como as VMs. Temos um certificado curinga que pode ser usado em todos os nossos anfitriões. Tudo parece funcionar corretamente, mas eu receber a seguinte nos logs do apache para o proxy:

[avisar] Init: servidor SSL IP / porta de conflito: host1.domain.com:443 (/ etc / apache2 / sites-enabled / Host1: 1) vs. host2.domain.com:443 (/ etc / apache2 / sites-enabled / host2: 1)

Há um destes mensagem de erro para cada host temos uma configuração no proxy. Nossa configuração de host virtual para o proxy é postado abaixo:

<VirtualHost ipaddress:443>
    ServerName host1.domain.com
    ProxyPreserveHost On
    ProxyRequests Off
    ProxyPass / https://privateip:443/
    ProxyPassReverse / https://privateip:443/

    SSLProxyEngine on
    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/server.crt
    SSLCertificateKeyFile /etc/ssl/private/server.key
</VirtualHost>

Existe alguma maneira que eu posso chegar a este trabalho?

Foi útil?

Solução

Parece que o Apache está avisando que você tem várias seções <VirtualHost> com o mesmo endereço IP e porta ... tanto quanto fazê-la funcionar sem avisos, eu acho que você precisaria usar algo como Name Server Indicação (SNI ), uma forma de identificar o nome do host solicitado como parte do handshake SSL. Basicamente, ele permite que você faça com base em nome de hospedagem virtual sobre SSL, mas não tenho certeza o quão bem ele é suportado pelos navegadores. Outros que algo como SNI, você está basicamente limitado a um nome de domínio com SSL para cada endereço IP que você exponha à Internet pública.

Claro que, se você é capaz de acessar os sites corretamente, você provavelmente vai ficar bem ignorando os avisos. Estes os particulares não são muito graves - são principalmente uma indicação do que para olhar se você estiver enfrentando problemas

Outras dicas

Tanto quanto eu sei, Apache suporta SNI desde a versão 2.2.12 Infelizmente, a documentação ainda não reflete essa mudança.

Vá para http://wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI até que seja acabados

Você pode ser capaz de substituir o:

VirtualHost ipaddress:443

com

VirtualHost *:443

Você provavelmente precisará TODO isso em todos os seus anfitriões virt.

Provavelmente vai esclarecer essa mensagem. Deixe a preocupação directiva ServerName sobre o encaminhamento da mensagem de pedido.

Mais uma vez, você pode não ser capaz de fazer isso se você tiver aliases múltiplos de ip para a mesma máquina.

O VirtualHost ficaria assim:

NameVirtualHost IP_Address:443

<VirtualHost IP_Address:443>
    SSLEngine on
    SSLCertificateFile /etc/pki/tls/certs/ca.crt    # Where "ca" is the name of the Certificate
    SSLCertificateKeyFile /etc/pki/tls/private/ca.key
    ServerAdmin webmaster@domain_name.com
    DocumentRoot /var/www/html
    ServerName www.domain_name.com
    ErrorLog logs/www.domain_name.com-error_log
    CustomLog logs/www.domain_name.com-access_log common
</VirtualHost>

Apache não suporta SSL on-base de nome de host virtual, apenas em Hosts Virtuais baseadas em IP.

Fonte: Apache 2.2 SSL FAQ questão Por que não é possível uso Name-Based Virtual Hosting para identificar hosts virtuais diferentes SSL?

Ao contrário de SSL, a especificação TLS permite anfitriões baseados em nome (SNI como mencionado por outra pessoa), mas Apache ainda não suporta este recurso. Ela supostamente vai em uma versão futura quando compilado contra OpenSSL 0.9.8.

Além disso, mod_gnutls reivindicações para apoiar SNI, mas eu nunca realmente tentou fazê-lo.

Primeiro você precisa NameVirtualHost ip: 443 em você config! Você provavelmente tem um com 80 no final, mas você também vai precisar de um com 443.

Em segundo lugar você precisa de um * .domain certificado (wildcard) (é possível fazer um)

Em terceiro lugar você pode fazer apenas teias something.domain em um ip (por causa do certificado)

Você deve adicionar abaixo parte para ativar a funcionalidade NameVirtualHost com determinado IP.

NameVirtualHost IP_Address:443
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top