Monitorer les certificats SSL avec Discord

Les certificats SSL, c’est un peu comme les permis de conduire : ils ont une date d’expiration. Mais, avouons-le, qui a envie de surveiller manuellement chaque certificat pour éviter une surprise désagréable ? Heureusement, grâce à Discord, vous pouvez recevoir une alerte avant que ça ne devienne un problème.

Comment mettre en place un système simple pour monitorer vos certificats SSL et recevoir une notification dans un canal Discord ?

Ce dont vous aurez besoin :

  • Un serveur ou un ordinateur capable d’exécuter des scripts Python.
  • Un compte Discord avec un serveur où vous avez les droits pour configurer un webhook.
  • Un peu de patience et de curiosité !

Étape 1 : Configurer un webhook Discord

Pour recevoir des notifications, on utilise un webhook Discord. Voici comment le configurer :

  1. Rendez-vous dans Discord : Accédez aux paramètres de votre serveur.
  2. Allez dans Intégrations > Webhooks : Cliquez sur « Créer un webhook ».
  3. Personnalisez-le : Donnez-lui un nom sympa, comme « Alerte SSL ».
  4. Copiez l’URL du webhook : Vous en aurez besoin dans le script.

Étape 2 : Écrire un script Python

Passons à la technique ! Le script ci-dessous vérifie l’expiration des certificats SSL pour une liste de domaines et envoie une notification sur Discord si un certificat expire bientôt.

import ssl
import socket
from datetime import datetime
import requests

# Configuration
domains = ["example.com", "votredomaine.com"]
webhook_url = "https://discord.com/api/webhooks/<votre_webhook_id>"

def check_ssl_expiry(domain):
context = ssl.create_default_context()
with socket.create_connection((domain, 443)) as sock:
with context.wrap_socket(sock, server_hostname=domain) as ssock:
cert = ssock.getpeercert()
expiry_date = datetime.strptime(cert['notAfter'], "%b %d %H:%M:%S %Y GMT")
return expiry_date

def send_discord_alert(domain, days_left):
message = {
"content": f"⚠️ Le certificat SSL pour `{domain}` expire dans {days_left} jours ! Renouvelez-le vite. 🚨"
}
requests.post(webhook_url, json=message)

for domain in domains:
try:
expiry_date = check_ssl_expiry(domain)
days_left = (expiry_date - datetime.utcnow()).days
if days_left <= 30: # Seuil d'alerte : 30 jours
send_discord_alert(domain, days_left)
except Exception as e:
print(f"Erreur pour {domain}: {e}")
Python - Discord et certificat SSL

Étape 3 : Planifier l’exécution du script

Vous avez le script, mais pour qu’il travaille tout seul (comme un grand), il faut le planifier :

Sur Linux (via cron)

– Ouvrez votre crontab :

crontab -e

– Ajoutez une ligne pour exécuter le script tous les jours :

0 0 * * * python3 /chemin/vers/votre/script.py

 

Étape 4 : Testez et ajustez

  • Exécutez le script manuellement pour vérifier que tout fonctionne.
  • Ajustez la liste de vos domaines dans le script.
  • Changez le seuil d’alerte si 30 jours ne vous conviennent pas.

 

Démarrez une conversation

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.