From f92551e9dcd46b4ac6e2dc00751db8eed56cd260 Mon Sep 17 00:00:00 2001 From: JJ Date: Wed, 5 Feb 2025 10:46:08 +0100 Subject: [PATCH] =?UTF-8?q?Comprobar=20fecha=20expiraci=C3=B3n=20certifica?= =?UTF-8?q?do.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cert_expiration_date.py | 44 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 cert_expiration_date.py diff --git a/cert_expiration_date.py b/cert_expiration_date.py new file mode 100644 index 0000000..bb381bd --- /dev/null +++ b/cert_expiration_date.py @@ -0,0 +1,44 @@ +import ssl +import socket +import sys +from datetime import datetime + +def check_certificate_expiry(hostname, port=443): + try: + # Crear un contexto SSL + context = ssl.create_default_context() + + # Conectar al servidor y obtener el certificado + with socket.create_connection((hostname, port)) as sock: + with context.wrap_socket(sock, server_hostname=hostname) as ssock: + cert = ssock.getpeercert() + + # Obtener la fecha de expiración del certificado + expiry_date = datetime.strptime(cert['notAfter'], '%b %d %H:%M:%S %Y %Z') + + # Obtener la fecha actual + current_date = datetime.utcnow() + + # Calcular la diferencia en días + delta = expiry_date - current_date + days_until_expiry = delta.days + + # Verificar si el certificado está a menos de 20 días de caducar + if days_until_expiry < 20: + print(f"CRITICAL: El certificado de {hostname} caduca en {days_until_expiry} días.") + sys.exit(2) + else: + print(f"OK: El certificado de {hostname} caduca en {days_until_expiry} días.") + sys.exit(0) + + except Exception as e: + print(f"UNKNOWN: Error al verificar el certificado de {hostname}: {e}") + sys.exit(3) + +if __name__ == "__main__": + if len(sys.argv) != 2: + print("Uso: python check_certificate.py ") + sys.exit(1) + + hostname = sys.argv[1] + check_certificate_expiry(hostname) \ No newline at end of file