MrShandy

Cert checker

Oct 3rd, 2023 (edited)
705
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.14 KB | None | 0 0
  1. import socket
  2. import ssl
  3. import datetime
  4. from urllib.parse import urlparse
  5. from dateutil import parser
  6.  
  7.  
  8. def notification(days):
  9.     print(f"Пора обновить сертификат. Дней до истечения: {days}")
  10.  
  11.  
  12. def check_ssl_expiry(domain):
  13.     try:
  14.         context = ssl.create_default_context()
  15.         conn = context.wrap_socket(socket.socket(socket.AF_INET), server_hostname=domain)
  16.         conn.settimeout(3.0)
  17.  
  18.         with conn:
  19.             conn.connect((domain, 443))
  20.             cert = conn.getpeercert()
  21.  
  22.             expiry_date = parser.parse(cert['notAfter'])
  23.  
  24.             days_until_expiry = (expiry_date.replace(tzinfo=None) - datetime.datetime.utcnow()).days
  25.             print(f'Дней до истечения: {days_until_expiry}')
  26.             if days_until_expiry < 30:
  27.                 notification(days_until_expiry)
  28.  
  29.     except (ssl.CertificateError, ssl.SSLError, socket.timeout, ConnectionRefusedError) as e:
  30.         print(f"Ошибка при проверке SSL: {e}")
  31.  
  32.  
  33. url = "https://shandy-dev.ru"
  34. parsed_url = urlparse(url)
  35. domain = parsed_url.netloc
  36.  
  37. check_ssl_expiry(domain)
  38.  
Advertisement
Add Comment
Please, Sign In to add comment