Назад | Перейти на главную страницу

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

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

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

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

Они отлично работают через браузеры / и т.д., и при запросе сайта используются соответствующие сертификаты (ожидаемое поведение 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 - сертификат '* .example.com' истекает 2020-03-08 23:59 + 0000 / UTC. HTTP OK: HTTP / 1.1 302 Найдено - 572 байта за время ответа 0,016 секунды

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

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

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

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

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

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

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

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

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