Скрипт для проверки валидности сертификата сервера
Обратились коллеги, скину скрин ошибки соединения с teamwork
надо проверить валидность сертификата
собственный тест сервера ошибки не выявил
как и собственный тест менеджера подключений
обратите внимание, все соединения защищены шифрованием ssl
давайте, напишем простой скрипт на bash для тестирования серификата на каждом подключении снаружи
#!/bin/bash
HOST="имя сервера" # Замените на ваш домен
#PORT="443"
PORT="27001"
DAYS_THRESHOLD=30 # За сколько дней предупреждать об истечении
# 1. Получаем даты окончания сертификата
# -connect: Подключаемся к хосту:порту
# -servername: Указываем SNI (Server Name Indication) для SNI-серверов
# x509 -noout -dates: Извлекаем даты из сертификата
END_DATE_STR=$(openssl s_client -connect $HOST:$PORT -servername $HOST 2>/dev/null | openssl x509 -noout -dates | grep "notAfter")
if [ -z "$END_DATE_STR" ]; then
echo "Не удалось получить сертификат или ошибка соединения для $HOST"
exit 1
fi
# Извлекаем дату в формате 'notAfter=...'
END_DATE=$(echo "$END_DATE_STR" | cut -d '=' -f 2)
# 2. Конвертируем дату в секунды с эпохи Unix
# date -d: Парсит дату
# +%s: Выводит в секундах
END_TIMESTAMP=$(date -d "$END_DATE" +%s)
CURRENT_TIMESTAMP=$(date +%s)
# 3. Вычисляем оставшиеся дни
DAYS_LEFT=$(( (END_TIMESTAMP - CURRENT_TIMESTAMP) / 86400 )) # 86400 секунд в дне
echo "Сертификат для $HOST действителен до: $END_DATE ($DAYS_LEFT дней осталось)"
# 4. Проверка на истечение срока
if [ "$DAYS_LEFT" -lt 0 ]; then
echo "!!! ВНИМАНИЕ: Сертификат для $HOST истек $((-1 * DAYS_LEFT)) дней назад !!!"
elif [ "$DAYS_LEFT" -le "$DAYS_THRESHOLD" ]; then
echo "!!! ВНИМАНИЕ: Сертификат для $HOST истекает через $DAYS_LEFT дней (менее $DAYS_THRESHOLD) !!!"
else
echo "Сертификат для $HOST в порядке."
fiну и результат выполнения (проверял 443 и 27001 порты)