Мониторинг SSL сертификатов один из важных моментов в поддержке серверной инфраструктуры. Легко может случится, что из-за вовремя не продленного сертификата какой-нибудь сервис прекратит работать. Например таким образом ломается работа сервисов Skype For Business как внутри организации между EDGE сервером и FrontEnd, так и при работе с федеративными партнерами. Мониторинг SSL сертификата с помощью Zabbix раньше было костыльным делом, приходилось изобретать различные скрипты. С появлением новой версии Zabbix Agent 2 ситуация улучшилась. Теперь можно мониторить сертификат с помощью встроенного плагина WebCertificate. Ниже опишу личный опыт применения данной возможности, а так же нюансы по которым отказаться полностью от самописных решений пока не удалось.
Минимальные требования для работы
Настраивается все очень просто, но чтобы все заработало необходимо соблюсти несколько базовых условий:
- Zabbix Server версии 5.4 и выше;
- Zabbix Agent 2 последней версии. Мне пришлось обновить агента до последней версии. На момент написания статьи это 5.4.8;
- Установить шаблон мониторинга сертификата. Если установка сервера старая и обновлена до последней версии то нужного шаблона в комплекте может не оказаться. Скачать шаблон можно из репозитория Zabbix на github;
- Подключить шаблон к хосту;
- Прописать макросы;
Настройка макросов для мониторинга
{$CERT.EXPIRY.WARN} — время в днях до истечения срока сертификата для срабатывания тригера и получения уведомления. Если не указывать макрос в хосте будет использовано значение по умолчанию из шаблона 7 дней.
{$CERT.WEBSITE.HOSTNAME} — хостнейм, который необходимо проверять обычно равный CN прописанному в сертификате. Смотрите подробнее в нюансах.
{$CERT.WEBSITE.IP} — адрес к которому необходимо подключаться. Если я правильно понял, например если для сервиса используется некоторое разделение и один и тот же хостнейм указанный в CERT.WEBSITE.HOSTNAME может быть на разных адресах (например адрес sip на frontend сервер и на edge сервере Skype).
{$CERT.WEBSITE.PORT} — Порт по которому проводить проверку. В шаблоне указан 443 по умолчанию, можно поменять указав макрос в параметрах хоста.
Тонкости использования
На время написания статьи я не увидел, или просто не понял как можно мониторить несколько сертификатов на одном хосте. Например в edge скайпа есть сертификат для внутренней коммуникации и внешний для федерации.Аналогично на реверс прокси (или WAP) для каждого внутреннего хоста имеется свой сертификат. Как это делать с помощью агента и описанных возможностей я не увидел, если вы знаете буду признателен за ссылки в комментариях. Такие сертификаты можно проверять старыми самописными решениями см. ниже.
Так же столкнулся с тем, что проверка сертификата доменного центра сертификации получилась не стандартной. В сертификате CN указан не в FQDN формате и он не соответствовал имени хоста центра сертификации. Решилось просто указанием макроса {$CERT.WEBSITE.IP} с адресом на котором висит сервис с сертификатом, а имя для {$CERT.WEBSITE.HOSTNAME} взял из поля CN самого сертификата.
Помимо срока действия сертификата производятся и ряд других проверок, например использование слабых подписей и валидация издателя. Поэтому для проверки сертификата на Linux сервере подписанного доменным центром сертификации необходимо обязательно установить корневой сертификат доменного центра сертификации и перезапустить агента Zabbix. Как установить корневой сертификат писал здесь: SSL в Linux советы и рецепты.
На скриншоте выше пример проверки сертификата на Linux сервере до установки корневого сертификата. Сертификат помечен как invalid поскольку плагин не смог проверить издателя. Просто устанавливаем корневой сертификат, перезапускаем агента Zabbix и через некоторое время сертификат проходит проверку успешно.
Самописные решения для мониторинга SSL сертификатов в Zabbix
Стрые решения по прежнему актуальны для проверки сертификатов на устройствах и хостах, куда невозможно установить агента Zabbix, но проверять валидность сертификата необходимо. Я для этих целей пользуюсь решением с сайта Serveradmin: https://serveradmin.ru/monitoring-sroka-deystviya-ssl-sertifikata-v-zabbix/
Решение представляет из себя набор скриптов устанавливаемых непосредственно на сервер Zabbix и далее с помощью openssl происходит проверка срока действия сертификата. Я продолжаю использовать это решение для проверки сертификатов на устройствах и серверах куда невозможно установить агента Zabbix.
Дополнительные материалы по теме SSL
Дополнения приветствуются в комментариях.
Точно также сегодня установил все свежие версии агента и шаблона, точно также ломаю голову, как мониторить несколько сертификатов. Пробовал в макросе через запятую прописать, смотрит только на первый в списке.
Если вдруг выяснишь, как туда несколько сертификатов прописать в макросах, пингани на почту плиз)
Постараюсь не забыть, если пообещаете то же самое 🙂
разве несколько шаблонов подключить под каждій домен свой