Múltiplo SSL em 1 domínio / cert / ip / port para vários servidores com base no redirecionamento da porta IP de origem

1

Eu tenho uma pergunta muito específica que parece ser a que já foi perguntada antes, mas é um pouco diferente e não é um caso muito usado, eu acho.

É possível executar vários servidores internos (web) , sendo executados em um único host , usando um único domínio , com um único certificado SSL , usando um único endereço IP externo e uma única porta externa , usando o mapeamento de encaminhamento de porta do endereço IP de origem para a porta interna ?

Pense nisso, como se você desejasse veicular o site www.example.com para 10 clientes em diferentes locais, receber conteúdo diferente veiculado, proteger com SSL confirmado, com base no endereço IP de origem do qual eles se conectam, enquanto você só precisa de um servidor real (e um endereço IP externo) como host para os 10 servidores web e, claro, só precisa de um certificado SSL.

Mais informações e condições:

  • O host principal é uma caixa do CentOS 7 atrás de um firewall (OpenBSD + PF) usando o NAT básico
  • Os servidores internos (web) executam cada um em uma porta personalizada separada (por exemplo, 4431, 4432, 4433 ...)
  • Somente o IPv4 será usado, sem IPv6
  • Nenhum SNI está sendo usado / necessário (porque um único domínio está sendo usado)

Para configurar isso para a situação de exemplo, usando o Apache como exemplo para os servidores (da web), tive o seguinte plano em mente (assumindo que o Apache esteja configurado e você tenha o certificado SSL pronto para usar para o Apache e nenhum firewall local na caixa do CentOS 7 é usado para facilitar este exemplo):

Configure aliases de IP estático em sua interface de rede ethX em / etc / sysconfig / network-scripts / ifcfg-ethX na caixa do CentOS 7

IPADDR=10.0.0.1
IPADDR1=10.0.0.2
IPADDR2=10.0.0.3
... etc. etc as many IP aliases as needed
PREFIX=24
PREFIX1=24
PREFIX2=24
... etc. etc. as many prefix aliases as needed

Configure os Apache Virtual Hosts em /etc/httpd/conf.d/example.conf na caixa do CentOS 7

Listen 4431
Listen 4432
... etc. etc. as many Listen entries as needed

<VirtualHost 10.0.0.1:4431>
ServerName www.example.com
SSLEngine on
SSLCertificateFile /some/directory/www.example.com.crt
SSLCertificateKeyFile /some/directory/www.example.com.key
</VirtualHost>

<VirtualHost 10.0.0.2:4432>
ServerName www.example.com
SSLEngine on
SSLCertificateFile /some/directory/www.example.com.crt
SSLCertificateKeyFile /some/directory/www.example.com.key
</VirtualHost>

... etc. etc. as many VirtualHost directives as needed

Configure o endereço IP de origem do cliente para redirecionamentos de porta no /etc/pf.conf do firewall do OpenBSD

match out on $netw_interface from $internal_server1 nat-to $external_ip
match out on $netw_interface from $internal_server2 nat-to $external_ip

... etc. etc. as many NAT rules as needed

pass in quick log on $netw_interface proto tcp from $client1 to $external_ip port 443 rdr-to $internal_server1 port 4431
pass in quick log on $netw_interface proto tcp from $client2 to $external_ip port 443 rdr-to $internal_server2 port 4432

... etc. etc. as many port redirect rules as needed

Onde as regras de correspondência são para NAT, $ client1 é um endereço de fonte externa do cliente e assim por diante, $ internal_server1 é o primeiro virtualhost escutando em 10.0.0.1:4431 e assim por diante e $ external_ip é o endereço IP onde o Um registro de www.example.com está apontando para.

Isso pode não soar muito útil, mas na situação real que eu poderia ser.

Alguém tentou isso antes? E se sim, funcionou bem e foi administrável? E é visível para os clientes de alguma forma?

Obrigado antecipadamente.

    
por WickedNet 13.06.2018 / 01:02

1 resposta

0

Acho que você está superengenharia do problema.
Tudo o que você precisa é de um sofisticado servidor Proxy Reverso, como o Nginx. Ele pode redirecionar solicitações para vários servidores back-end com base em muitas regras / condições, como IP de origem, cabeçalho de solicitação, URI específico, etc. Você pode ter o Reverse Proxy ouvindo na porta 80/443 e back-ends rodando no mesmo servidor em outras portas ou em servidores diferentes.  O domínio principal / SSL, juntamente com várias regras, devem ser configurados no servidor Proxy Reverso. Dependendo da regra, o Proxy Reverso servirá a solicitação de um back-end específico e essa configuração nunca ficará visível para os usuários finais.

    
por 16.06.2018 / 11:26