Всем привет.
SSL (TLS) сертификаты стали важным компонентом современной инфраструктуры, поэтому администратору нужно следить за тем, чтобы они не истекали и вовремя их обновлять. Удобно отслеживать срок действия SSL сертификатов на ваших сайтах с помощью системы мониторинга Zabbix.
В ранних версиях Zabbix для мониторинга SSL сертификатов приходилось использовать консольные скрипты, которые передают значения в Zabbix через UserParameter. В Zabbix Agent 2 появись возможность получения информации о сертификате с помощью встроенного плагина WebCertificate.
Вот здесь рассмотрены оба способа мониторинга срока действия SSL.
По второму способу скажу сразу что скрипт автора /usr/lib/zabbix/externalscripts/sslcert_expiration.sh однозначно рабочий:
#!/bin/bash
data=`echo | openssl s_client -servername $1 -connect $1:${2:-443} 2>/dev/null | openssl x509 -noout -enddate | sed -e 's#notAfter=##'`
ssldate=`date -d "${data}" '+%s'`
nowdate=`date '+%s'`
diffdate="$((${ssldate}-${nowdate}))"
echo $((${diffdate}/86400))
Кстати им же можно проверять сертификаты и на сереверах в локальной сети предприятия.
Но есть нюас.) В Linux без них никуда. При его тестировании на моем сервере Zabbix выскочил глюк на определении diffdate, что ему не делал скрипт тут падал в ошибку: «syntax error: invalid arithmetic operator (error token is «.
Решил я прибегнуть к помощи ChatGPT, сейчас это модно. Далее приведу варианты его решения которые он мне предлагал вчера вечером. Показываю только то те строки где он предлагал изменить в исходном коде для устранения ошибки:
1)
data=$(echo | openssl s_client -servername "$1" -connect "$1":${2:-443} 2>/dev/null | openssl x509 -noout -enddate | awk -F '=' '{print $2}')
2)
diffdate=$((`date -d "$ssldate" '+%s'`- `date -d "$nowdate" '+%s'`))
3)
# Using Python to calculate the difference in seconds
diffdate=$(python -c "from datetime import datetime; print(int((datetime.strptime('$data', '%b %d %H:%M:%S %Y %Z') - datetime.now()).total_seconds()))")
4)
# Retrieve the SSL certificate end date
data=$(echo | openssl s_client -servername "$1" -connect "$1":${2:-443} 2>/dev/null | openssl x509 -noout -dates | grep 'notAfter' | cut -d '=' -f 2)
5)
# Calculate the difference in seconds using 'bc' command
diffdate=$(echo "$ssldate - $nowdate" | bc)
Проверка решений своим поиском по Google привела к тем же вариантам, так что ChatGPT не соврал. Но увы, ни один из способов к успеху не привел. Видно хорошо был сформатирован код моего Zabbix appliance.
Надеюсь вам повезет больше. Удачи.







