Cert Checker

🧩 Syntax:
import socket
import ssl
import datetime
from urllib.parse import urlparse
from dateutil import parser
 
 
def notification(days):
    print(f"Пора обновить сертификат. Дней до истечения: {days}")
 
 
def check_ssl_expiry(domain):
    try:
        context = ssl.create_default_context()
        conn = context.wrap_socket(socket.socket(socket.AF_INET), server_hostname=domain)
        conn.settimeout(3.0)
 
        with conn:
            conn.connect((domain, 443))
            cert = conn.getpeercert()
 
            expiry_date = parser.parse(cert['notAfter'])
 
            days_until_expiry = (expiry_date.replace(tzinfo=None) - datetime.datetime.utcnow()).days
            print(f'Дней до истечения: {days_until_expiry}')
            if days_until_expiry < 30:
                notification(days_until_expiry)
 
    except (ssl.CertificateError, ssl.SSLError, socket.timeout, ConnectionRefusedError) as e:
        print(f"Ошибка при проверке SSL: {e}")
 
 
url = "https://shandy-dev.ru"
parsed_url = urlparse(url)
domain = parsed_url.netloc
 
check_ssl_expiry(domain)