Мониторинг SSL сертификата в Zabbix

Автор | 08.12.2016

В статье дана краткая инструкция о мониторинге SSL сертификата в Zabbix.

1.Зачем нужно делать мониторинг SSL сертификата в Zabbix?

В данном случае преследуется 2 цели:

  1. Не прое пропустить время окончания действия сертификата (особенно актуально для Let’s Encrypt сертификата).
  2. Контроль серийного номера (какая никакая защита от подмены (мало ли враги… )

2. Настраиваем агента Zabbix

Для начала нам нужен скрипт (alertscript). Создаем файл с названием checkssl.py примерно такого содержания:

#!/usr/bin/python3

import ssl
import sys
import socket
import datetime

def getexpiredays(hostname, param):
now = datetime.datetime.now()
ctx = ssl.create_default_context()
s = ctx.wrap_socket(socket.socket(), server_hostname=hostname)
s.connect((hostname, 443))
cert = s.getpeercert()
if param == ‘ser’:
return cert.get(‘serialNumber’)
elif param == ‘exp’:
expire_date = datetime.datetime.strptime(cert.get(‘notAfter’), ‘%b %d %H:%M:%S %Y %Z’)
return ((expire_date — now).days)
else:
return »

if __name__ == ‘__main__’:
args = sys.argv # hostname, param
hostname = args[1]
param = args[2] # exp, ser
print (getexpiredays(hostname), param)

и добавляем в каталог для скриптов. Расположение alertscript-ов задается в файле конфигурации агента.

В конец файла настроек агента надо добавить следующую строку:

UserParameter=checkssl[*],/etc/zabbix/scripts/checkssl.py $1 $2

В после настройки нужно перегрузить агента (все зависит от вашей ОС).

3. Настройка элементов

При данной конфигурации у нас есть 2 варианта элементов (items):

  1. checkssl[<hostname>,exp] — Количество дней до окончания действия сертификата
  2. checkssl[<hostname>,ser] — Серийный номер

Да, тут нужно это делать в ручную.

Выставляете триггеры как вам нужно, это статья не про настройку Zabbix.

Вот и все, теперь вы не пропустите время окончания вашего SSL сертификата.