Portanto, tenho dois sites em execução, cada um por trás de um único Amazon ELB.
Para o propósito deste post (e da privacidade de minhas empresas), usando esses nomes de host para cada um:
- example.com
- anotherexample.com
Certs estão instalados para ambos. Ambos os certificados são confiáveis (comprados de uma CA).
Eles funcionam perfeitamente bem através dos navegadores / etc e os certificados apropriados são usados quando o site é solicitado (comportamento esperado do ELB). Confirmamos com vários navegadores & solicita que os certificados apropriados sejam carregados e validados quando cada site é acessado.
No entanto, encontrei uma peculiaridade estranha ao tentar monitorar a expiração do certificado com o Nagios.
O monitoramento de certificados funciona, mas apenas para o certificado padrão no ELB, independentemente de qual host está sendo acessado.
Aqui está a definição do comando, configuração padrão:
define command{
command_name check_cert_expire
command_line $USER1$/check_http -S -H $HOSTADDRESS$ -C $ARG1$
}
Em seguida, nas definições de host / serviço:
define host{
host_name example.com
use docker-container
display_name Example Site 1
check_command check_https_page!/
}
define host{
host_name anotherexample.com
use docker-container
display_name Example Site 2
check_command check_https_page!/
}
define service{
host_name example.com
use generic-service
service_description Cert Expiry Site1
check_command check_cert_expire!45
}
define service{
host_name anotherexample.com
use generic-service
service_description Cert Expiry Site2
check_command check_cert_expire!45
}
No entanto, para AMBAS as verificações de serviço, recebo respostas IDÊNTICAS:
SSL OK - Certificate '*.example.com' will expire on 2020-03-08 23:59 +0000/UTC. HTTP OK: HTTP/1.1 302 Found - 572 bytes in 0.016 second response time
Portanto, independentemente do nome do host, ele está apenas verificando o cert example.com dentro do listener do ELB.
Anexei uma captura de tela da configuração do certificado do ELB. 2 certs instalados, eles funcionam bem em todos os casos, exceto no monitoramento do Nagios:
Tenho certeza de que isso tem algo a ver com o envio da solicitação ao ELB, que não aciona o roteamento de pacotes dentro do ELB para decifrar o host, mas não sabe ao certo por onde começar a descobrir o motivo.
Eu sei que esta pergunta é extremamente específica e obscura, mas espero que alguém tenha alguma idéia ou uma solução conhecida.
EDITAR:
Eu sei que isso é óbvio, mas tentando a verificação manualmente:
./check_http -S -H anotherexample.com -C 45
Me dá o mesmo resultado, retorna uma resposta válida, mas para o exemplo de cert!