This commit is contained in:
2025-03-10 06:54:49 +01:00
+44
View File
@@ -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 cert_expiration_date.py <hostname>")
sys.exit(1)
hostname = sys.argv[1]
check_certificate_expiry(hostname)