Простой мониторинг SSL сертификатов с помощью Zabbix

Недостатком простоты является некоторое количество ручной работы по добавлению элементов данных и триггеров, но лучше один раз сделать и потом не бегать с дымящейся известно_чем в день X.

1. Импортируем шаблон в Zabbix (на версиях 2.2 — 2.4 точно будет работать) zbx_export_templates_ssl;

2. «Присоединяем» шаблон к Zabbix server;

3. Правим конфиг Zabbix агента на сервере (я надеюсь он у вас установлен и мониторит сам сервер, потому что для этого есть хороший шаблон «из коробки»). Добавляем в /etc/zabbix/zabbix_agentd.conf (если у вас debian или вроде того).

UserParameter=ssl.eol[*],date -d "`echo | openssl s_client -connect "$1":"$2" 2>/dev/null | openssl x509 -noout -dates | grep "notAfter" | sed 's|.*notAfter=||'`" +%s
UserParameter=ssl.current,date +%s

4. Перезапускаем Zabbix агента /etc/init.d/zabbix-agent restart

5. Затем можно сходить в «Последние данные», выбрать Zabbix server и убедиться что элемент данных возвращает значения. А так же открыть шаблон и посмотреть из чего он состоит.

Итак, у нас есть два элемента данных ssl.current — текущее время и ssl.eol[google.com,443] (end-of-life) в unix формате. Данные забираются с агента путём манипуляции с конвертацией даты. Для элемента данных добавлено два триггера, которые срабатывают за три недели и за неделю до окончания срока действия сертификата. Для простоты клонируйте элементы данных и триггеры, меняя нужные значения. И не забудьте добавить зависимость трёхнедельного триггера от недельного.

Если у вас что-то не завелось — попробуйте на Zabbix сервере вручную выполнить запрос:

echo | openssl s_client -connect google.com:443 2>/dev/null | openssl x509 -noout -dates

Команда позаимствована тут: http://www.shellhacks.com/ru/Kak-Proverit-Srok-Deystviya-SSL-Sertifikata-iz-Komandnoy-Stroki-v-Linux

6 комментариев

  1. Вопрос: если у меня несколько сертификатов на разных серверах, то мне клонировать надо только item с данными ssl.eol? А item c данными ssl.current останется в шаблоне один?

  2. Есть минимум 2 способа проверки даты протухания SSL сертификата . Через опрос веб сервера или через опрос файлов сертификатов на сервере где они лежат. Помощь .

    1. Тоже верно, но не всегда есть возможность поставить Zabbix агент на нужный сервер.

  3. Добрый день!
    Есть проблема: если у вас на одном IP несколько сайтов, то данная команда:
    echo | openssl s_client -connect ХОСТ:ПОРТ 2>/dev/null | openssl x509 -noout -dates
    вернёт вам даты первого сертификата. А если вам нужны данные по сертификату второго сайта?

    Вот эта команда вернёт всё как надо:
    echo | openssl s_client -connect ХОСТ:ПОРТ -servername ХОСТ 2>/dev/null | openssl x509 -noout -dates
    добавляем вот эту часть: -servername ХОСТ

    И, соответственно, в конфигурационном файле zabbix-agent:
    UserParameter=ssl.eol[*],date -d "`echo | openssl s_client -connect "$1":"$2" -servername "$1" 2>/dev/null | openssl x509 -noout -dates | grep "notAfter" | sed 's|.*notAfter=||'`" +%s
    добавилась часть: -servername «$1»

    1. Действительно, так оно и есть, пример ниже.
      https://ru.wikipedia.org/wiki/Server_Name_Indication

      ~$ echo | openssl s_client -connect forum.mtrend.ru:443 2>/dev/null | openssl x509 -noout -subject
      subject= /CN=cabinet.mtrend.ru
      ~$ echo | openssl s_client -connect cabinet.mtrend.ru:443 2>/dev/null | openssl x509 -noout -subject
      subject= /CN=cabinet.mtrend.ru

      ~$ echo | openssl s_client -connect forum.mtrend.ru:443 -servername forum.mtrend.ru 2>/dev/null | openssl x509 -noout -subject
      subject= /CN=*.mtrend.ru
      ~$ echo | openssl s_client -connect cabinet.mtrend.ru:443 -servername cabinet.mtrend.ru 2>/dev/null | openssl x509 -noout -subject
      subject= /CN=cabinet.mtrend.ru

Добавить комментарий для Dmitry Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *