Na AWS eu encerro o TLS em um Application Load Balancer. Configurei um certificado TLS curinga com o AWS Certificate Manager (ACM), por exemplo, *.example.com.
tenho a resolução do AWS Route 53 *.example.com
, mas não tenho nada para fazer, *.*.example.com
pois não preciso disso.
Eu sei que você não pode configurar certificados curinga para domínios de vários níveis, como *.*.example.com
.
https://x.example.com
está tudo bem e responde com um certificado válido. Recebo um erro de certificado com https://y.x.example.com
, o que faz sentido. Não preciso servir subdomínios de vários níveis, como *.*.example.com
.
Gostaria de poder bloquear todas as solicitações de domínio de vários níveis, como https://y.x.example.com
ou simplesmente não ter a resolução do Route 53. Basicamente eu quero uma Regra que diga qualquer Host para https://*.*.example.com
retorno 404 ou para o Host não ser resolvido.
No balanceador de carga do aplicativo, tenho 2 ouvintes, porta 80 e porta 443.
Posso configurar uma regra para o listener da porta 80 que funciona bem http://x.y.example.com
e posso retornar um 404, quando configuro a mesma regra para a porta 443 ela não funciona. O que acho que faz sentido porque o navegador não consegue concluir o handshake TLS.
Se eu preencher um nslookup
for x.example.com
e y.x.example.com
obtiver os mesmos NameServers, não esperarei que o Route 53 resolvesse y.x.example.com
.
Então, estou procurando a resposta para uma de duas perguntas:
- Como configurar o AWS Load Balancer para bloquear todos os subdomínios curinga de vários níveis na porta 443?
- Por que o Route 53 está resolvendo
y.x.example.com
/ como impedir que o Route 53 resolva o mesmo?
Responder1
Se se trata especificamente do caso HTTPS/TLS, não vejo isso sendo possível de forma significativa.
Se você não tiver um certificado válido para o nome ao qual o cliente está tentando se conectar, você não terá como enviar uma resposta válida (como a resposta 404 mencionada na pergunta), independentemente da configuração no lado do servidor.
Para o caso HTTP simples, pode ser possível fazer algo parecido com o que foi solicitado com base em umCondição do anfitrião, mas não tenho certeza se é realmente possível distinguir o caso de nível único versus multinível. Não tenho certeza se o caso HTTP simples é tão interessante hoje em dia.É assim que os curingas funcionam no DNS. Procurar um nome DNS que não faça parte de uma ramificação existente da árvore (independentemente de um ou mais rótulos estarem faltando) corresponderá a um registro curinga acima dele.
É importante notar também que*
só funciona como curinga quando é o rótulo mais à esquerda.*.example.com
funciona como curinga,*.foo.example.com
funciona como curinga, masfoo.*.example.com
,foo*.example.com
ou*foo.example.com
não são curingas no DNS.
Não acredito que você tenha uma maneira prática de usar curingas e obter a funcionalidade de "apenas um nível" solicitada (com curingas DNS em geral ou Route53 especificamente). Considere, em vez disso, adicionar os nomes específicos que você realmente precisa (dinamicamente, se necessário) ou, de outra forma, viver com o comportamento normal do curinga.
No geral, suspeito que a melhor opção seja não usar curingas no DNS e assim não ter o problema de clientes se conectarem ao ELB usando esses nomes indesejados.