SSL cert check

ssl-cert-check — делаем простой мониторинг SSL с уведомлениями на email о необходимости продления сертификата.

Установка скрипта.

1. Ставим всё необходимое для работы, ssl-cert-check забираем из github репозитория:

# yum install git openssl
# cd /usr/local/src/
# git clone https://github.com/Matty9191/ssl-cert-check
# cp ssl-cert-check/ssl-cert-check /usr/local/sbin/

2. Создадим файл /etc/ssl-cert-check-domains с доменами, которые будем периодически проверять. Выглядеть файл будет так:

# cat /etc/ssl-cert-check-domains
sysadmin.pm 443
yandex.ru 443
google.com 443

3. Выполним проверку статуса сертификатов у внесённых в список доменов:

# ssl-cert-check -f /etc/ssl-cert-check-domains

ssl-cert-check

Настройка уведомлений.

С помощью дополнительных параметров, мы можем указать интервал, по истечении которого, скрипт сообщит о неоходимости обновления сертификата, за это отвечает параметр -x. Например, вот так будут выглядеть результаты проверки, если для нас критично считать истекающими сертификаты, которые нужно продлить менее чем через 50 дней:

# ssl-cert-check -x50 -f /etc/ssl-cert-check-domains

ssl-cert-check

C помощью параметра -a, мы включаем отправку уведемления на email, а с параметром -e указываем email, на который уйдёт сообщение о необходимости продлить сертификат. В результате, итоговая команда выглядит так:

# ssl-cert-check -a -f /etc/ssl-cert-check-domains -q -x 30 -e alert@sysadmin.pm

Т. е. мы проверяем все домены из файла /etc/ssl-cert-check-domains, и уведомляем о необходимости продления сертификата, в случае если он истекает менее чем через 30 дней.

Нам остаётся только добавить эту задачу в cron:

0 21 * * * /usr/local/sbin/ssl-cert-check -a -f /etc/ssl-cert-check-domains -q -x 30 -e alert@sysadmin.pm

И мы будем получать соответствующие уведомления от нашей системы.

Стоит заметить, что в заметке рассмотрен один конкретный кейс. Скрипт ssl-cert-check умеет многое — например, проверять конкретные файлы сертификатов, работать с сертификатами из директории, может передать пароль для сертификата, если требуется, можно использовать его как плагин для Nagios и изменять формат вывода информации. Для получения подробностей достаточно выполнить ssl-cert-check -h и скрипт выведет все доступные для него опции.

13 thoughts on “SSL cert check

  1. Выкидывает ошибку в тот момент, когда пытаюсь подвязать отправку сообщений на почту.
    Пишет, что бинарный файл не найден и изменить переменную cantifindit, но тут не понятно, что именно изменить. можете подсказать?

    1. А какая конкретно ошибка? Возможно не хватает (или скрипт не видит) бинарника для отправки на почту.

      1. Возможно кому то поможет. Была такая же ошибка, установил на сервер sendmail, проблему решило, псьма отправляються и доходят до адресата.

  2. Не удается настроить отправку сообщений на почту.
    Требует изменить переменную cantifindit, но на что ее изменить?

  3. При проверке доменов из файлы выдает
    unable to load certificate
    140662060881560:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:701:Expecting: TRUSTED CERTIFICATE

  4. ERROR: The file named /var/tmp/cert.7d3ugU is unreadable or doesn’t exist )

    Всё очень сыро

    1. Сыровато, да. Время слать репорты и реквесты автору. 🙂

  5. Мне кажется вот этот простой и очень действенный скрипт, плюс отправка в телеграм. 🙂
    http://bit.ly/2ZjDwfU
    Скрипт для отправки в телеграм (не только для монит, в умелых руках, отправляет все)
    http://bit.ly/33TfFYj

    Можно переделать для себя, вот мой вариант:
    http://bit.ly/2KXYZWU

  6. по поводу ошибки
    ERROR: The file named /var/tmp/cert.7d3ugU is unreadable or doesn’t exist )

    нужно в списке проверяемых хостов через пробел указываем порт, например

    # cat /etc/ssl-cert-check-domains
    yandex.ru 443
    google.com 443

    ]# ssl-cert-check -f /etc/ssl-cert-check-domains

    Host Status Expires Days
    ———————————————— ———— ———— —-
    yandex.ru:443 Valid Sep 4 2020 269
    google.com:443 Valid Feb 5 2020 57

  7. Приветствую.
    Когда-то давно (Январь 2017) писал похожий скрипт — https://mnorin.com/proverka-sertifikata-servera-iz-bash.html
    Он очень простой, был нужен исключительно для мониторинга. Не сохраняет сам сертификат, использует openssl клиент напрямую.
    Он же на Гитхабе — https://github.com/mnorin/bash-scripts/blob/master/utils/certinfo.sh
    И для DNS — https://mnorin.com/monitoring-daty-prodleniya-domennogo-imeni.html
    Тоже простой.
    Изначальная идея была в использовании обоих скриптов для Nagios/Zabbix, а нотификации должны были обеспечиваться средствами системы мониторинга. Может кому пригодятся.

Добавить комментарий

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