Недостатком простоты является некоторое количество ручной работы по добавлению элементов данных и триггеров, но лучше один раз сделать и потом не бегать с дымящейся известно_чем в день 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
Вопрос: если у меня несколько сертификатов на разных серверах, то мне клонировать надо только item с данными ssl.eol? А item c данными ssl.current останется в шаблоне один?
Да, ssl.current это текущее время в unix формате. Не слишком элегантно, но работает).
А лучше смотрите: http://djvn.sk/ssl2/
Есть минимум 2 способа проверки даты протухания SSL сертификата . Через опрос веб сервера или через опрос файлов сертификатов на сервере где они лежат. Помощь .
Тоже верно, но не всегда есть возможность поставить Zabbix агент на нужный сервер.
Добрый день!
Есть проблема: если у вас на одном 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»
Действительно, так оно и есть, пример ниже.
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