Vários certificados SSL no Apache usando vários IPs públicos - não funcionando

3

Eu preciso configurar vários certificados SSL em um único servidor Apache. Eu já sei que preciso de vários endereços IP externos, pois não posso usar o SNI (somente executando o Apache 2.2.3 neste servidor).

Eu assumi que tinha tudo configurado corretamente, infelizmente as coisas não estão funcionando como deveriam (ou talvez eu deva dizer, como eu esperava que eles funcionassem) ...

No meu httpd.conf eu tenho:

NameVirtualHost *:80
NameVirtualHost *:443

Digamos que meu IP público seja 12.0.0.1 e meu IP privado seja 192.168.0.1.

Quando uso o IP público em meu vhost, meu website padrão está sendo exibido, em vez daquele definido em meu vhost, por exemplo:

<VirtualHost 12.0.0.1:443>
   ServerAdmin [email protected]

   ServerName blablabla.site.com

   DocumentRoot /data/sites/blablabla.site.com

   ErrorLog /data/sites/blablabla.site.com-error.log
   #CustomLog /data/sites/blablabla.site.com-access.log common

   SSLEngine On
   SSLCertificateFile /etc/httpd/conf/ssl/blablabla.site.com.crt
   SSLCertificateKeyFile /etc/httpd/conf/ssl/blablabla.site.com.key
   SSLCertificateChainFile /etc/httpd/conf/ssl/blablabla.site.com.ca-bundle

   <Location />
       SSLRequireSSL On
       SSLVerifyDepth 1
       SSLOptions +StdEnvVars +StrictRequire
   </Location>

</VirtualHost>

Quando uso o IP privado no meu vhost, tudo funciona como deveria (o site definido no meu vhost está sendo exibido), por exemplo:

<VirtualHost 192.168.0.1:443>
...same as above...
</VirtualHost>

Meu servidor está escutando em todas as interfaces:

[root@grbictwebp02 httpd]# netstat -tulpn | grep :443
tcp        0      0 0.0.0.0:443                 0.0.0.0:*                   LISTEN      5585/httpd

O que estou fazendo de errado? Se eu não conseguir fazer isso funcionar, não posso continuar adicionando o segundo certificado SSL no outro IP público ...

Se mais informações forem necessárias, é só me avisar!

    
por St. Even 18.12.2012 / 08:25

3 respostas

1

Você precisa configurar seus hosts virtuais com os endereços IP vinculados ao servidor.

Parece que você tem um dispositivo NAT que traduz seu IP público para um IP privado que seu servidor atribuiu a uma interface de rede. Depois que o NAT ocorre, não há registro nesse pacote do IP público, portanto, o mapeamento precisa ocorrer em seus IPs privados.

(Se você tiver os dois IPs públicos em NAT para o mesmo IP privado, você precisará alterar isso - ter um IP privado diferente por IP público.)

    
por 18.12.2012 / 08:53
1

O que você quer dizer quando diz "não está trabalhando"? Algum erro no log de erros do Apache? Por favor, poste a declaração completa do VirtualHost.

Defina sua pergunta como: "Eu fiz os seguintes passos, adicionei a seguinte configuração aqui, então fiz isso, e eu esperava que fizesse isso. Mas diz isso. O que há de errado?" Quanto mais claro você escrever seu post, maior a chance de encontrar a resposta também.

    
por 18.12.2012 / 08:49
1

Você deve começar removendo o

NameVirtualHost 

linhas. NameVirtualHost é usado quando você usa os nomes de host para separar os hosts virtuais - já que você não está fazendo isso, você deve remover essas linhas. Você também precisa especificar a porta para seus hosts virtuais, assim:

<VirtualHost 192.168.0.1:443>

A razão pela qual seu host privado funciona, mas não o público, é que quando você está usando NameVirtualHosts e seu servidor não pode ter certeza de qual host você deseja, ele sempre usará o primeiro listado porque esse é o padrão .

    
por 18.12.2012 / 09:10