Aller au contenu

Gestion des erreurs et des exceptions liées à TLS#


Identifier et comprendre les codes d'erreur courants#


Problèmes de certificat#

  • Certificat expiré
  • Certificat non encore valide
  • Certificat non émis par une autorité de certification (CA) reconnue (ex: self-signed)
  • Nom d'hôte dans le certificat ne correspond pas à l'hôte attendu
  • Chaîne de confiance cassée (incomplète ou invalide)

Négociation de chiffrement échouée#

  • Aucun algorithme de chiffrement commun entre le client et le serveur (cipher suite mismatch)
  • Version de protocole TLS incompatibles
  • Utilisation de paramètres de chiffrement obsolètes ou vulnérables

Connexion réinitialisée#

  • Interruption inattendue de la connexion
  • Problèmes de réseau ou de pare-feu

Gestion des erreurs côté client#

  • Utiliser les fonctions et les exceptions spécifiques aux bibliothèques TLS
    • ex: ssl.SSLError en Python,
    • ex: javax.net.ssl.SSLException en Java
    • ex: ERR_get_error() et ERR_error_string() pour OpenSSL en C/C++
  • Gérer les erreurs de connexion et de négociation de chiffrement
    • ex: Vérifier les erreurs de certificat (ex: X509CertificateException)
    • ex: demander à l'utilisateur s'il souhaite poursuivre malgré un certificat non valide
  • Journaliser les erreurs pour faciliter l'analyse et la résolution des problèmes

Gestion des erreurs côté serveur#

  • Utiliser les exceptions spécifiques aux bibliothèques TLS
  • Gérer les erreurs de connexion et de négociation de chiffrement
    • Configurer le serveur pour renvoyer des messages d'erreur appropriés en cas d'échec de la négociation TLS
    • Journaliser les erreurs pour faciliter l'analyse et la résolution des problèmes

Récupération et reprise après une erreur TLS#

  • Établir une nouvelle connexion TLS en cas d'échec
  • Mettre en place des mécanismes de reprise automatique (ex: essayer différents paramètres de chiffrement)
  • Adapter la stratégie de reprise en fonction du type d'erreur
  • Debug avec openssl s_client -connect example.com:443 -servername example.com -tls1_2 -showcerts -debug

Importance de la journalisation des erreurs pour faciliter l'analyse et la résolution des problèmes#

  • Configurer la journalisation des erreurs dans les applications pour inclure des informations sur les erreurs TLS
    • Utiliser des outils de journalisation (ex: log4j pour Java, syslog pour C/C++, etc.)
    • Inclure les codes d'erreur, les messages d'erreur et les informations de contexte
    • Utiliser des niveaux de journalisation appropriés pour distinguer les erreurs critiques des erreurs mineures
  • Centraliser la journalisation des erreurs pour faciliter l'analyse et la résolution des problèmes en cas de problèmes complexes ou récurrents
    • Utiliser des outils de surveillance et d'alerte pour être informé en temps réel des erreurs TLS et agir en conséquence