Несколько сертификатов на слушателе ELB. Мониторинг Nagios проверяет только значение по умолчанию, независимо от имени хоста

Итак, у меня работает два сайта, каждый из которых находится за одним Amazon ELB.

В целях этого сообщения (и конфиденциальности моей компании), использование этих имен хостов для каждого:

  • example.com
  • anotherexample.com

Сертификаты установлены для обоих. Оба сертификата являются надежными (приобретены в центре сертификации).

Они отлично работают через браузеры и т. Д., И при запросе сайта используются соответствующие сертификаты (ожидаемое поведение ELB). Подтвердите с помощью различных браузеров и запросов, что соответствующие сертификаты загружаются и проверяются при доступе к каждому сайту.

Однако я обнаружил странную причуду при попытке контролировать срок действия сертификата с помощью Nagios.

Мониторинг сертификатов работает, , но только для сертификата по умолчанию в ELB, независимо от того, к какому узлу осуществляется доступ.

Вот определение команды, стандартная настройка:

define command{
    command_name    check_cert_expire
    command_line    $USER1$/check_http -S -H $HOSTADDRESS$ -C $ARG1$
}

Затем в определениях хоста / службы:

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
}

Однако для ОБЕИХ проверок службы я получаю ИДЕНТИЧНЫЕ ответы:

SSL OK - Certificate '* .example.com 'истекает 2020-03-08 23:59 + 0000 / UTC. HTTP OK: HTTP / 1.1 302 Найдено - 572 байта за время ответа 0,016 секунды

Таким образом, независимо от имени хоста, он проверяет только сертификат example.com внутри слушателя ELB.

Я приложил снимок экрана с настройкой сертификата ELB. Установлено 2 сертификата, они работают нормально во всех случаях, кроме этого мониторинга Nagios:

cert setup

Я уверен, что это как-то связано с тем, что запрос, отправляемый в ELB, не запускает маршрутизацию пакетов внутри ELB для расшифровки хост, но даже не знаю, с чего начать, чтобы выяснить, почему.

Я знаю, что этот вопрос чрезвычайно конкретен и неясен, но надеюсь, что у кого-то есть идеи или известное решение.

РЕДАКТИРОВАТЬ: Я знаю, что это само собой разумеется, но попытка проверки вручную:

./ check_http -S -H anotherexample.com -C 45

Дает тот же результат, возвращает правильный ответ, но для сертификата example.com!

1
задан 2 August 2018 в 02:39
1 ответ

Использовать check_http --sni

Когда несколько сертификатов используются на одном ip: port, клиент должен использовать Идентификация имени сервера (SNI) , чтобы выбрать нужный. Современные браузеры делают это по умолчанию, однако nagios check_http нужно указать для выполнения SNI с помощью - sni .

4
ответ дан 3 December 2019 в 17:33

Теги

Похожие вопросы