Aller au contenu
ecdsa.com
Java (JSSE)Java

Message d’erreur

javax.net.ssl.SSLException: Unsupported or unrecognized SSL message

Également affiché sous la forme

  • Unsupported or unrecognized SSL message

Le JDK 25 affiche le même texte côté client et sur un serveur JSSE qui reçoit du HTTP en clair (les deux cas ont été vérifiés). Lorsque le pair n’envoie rien et ferme la connexion, Java signale plutôt « Remote host terminated the handshake ».

Java (JSSE) — the peer's reply is not a TLS record

Ce que cela signifie

JSSE attendait un enregistrement TLS et a reçu des octets qu’il ne peut pas analyser comme tel, le plus souvent le texte d’une réponse HTTP envoyée par un serveur HTTP en clair. Côté client, https:// a été utilisé vers un port qui ne parle pas TLS ; côté serveur (un écouteur TLS de Tomcat ou de Netty), un client a envoyé du HTTP en clair sur le port TLS. Le certificat n’a rien à voir ici.

Pourquoi cela se produit

Comment corriger l’erreur

  1. 1.

    Vérifier ce que parle le port

    Si le port répond en HTTP en clair, utilisez http:// ou le vrai port TLS.

    bash
    curl -si http://api.example.com:8080/ | head -1      # an HTTP status line -> not TLS
    openssl s_client -connect api.example.com:8443 -brief </dev/null
  2. 2.

    Clients de messagerie et d’annuaire : accorder le mode TLS et le port

    Utilisez STARTTLS sur le port de soumission (587) et le TLS implicite uniquement sur le 465 (ou ldaps:// sur le 636).

    text
    # Mail (Jakarta Mail): STARTTLS on 587, implicit TLS on 465
    mail.smtp.port=587
    mail.smtp.starttls.enable=true
    mail.smtp.starttls.required=true
    # (mail.smtp.ssl.enable=true belongs to port 465 only)
  3. 3.

    Propriétaires de serveurs : séparer les ports HTTP et HTTPS

    Faites pointer les clients et les contrôles d’intégrité vers https://, ou exposez un connecteur HTTP en clair qui redirige vers le port TLS.

    text
    # Spring Boot server logging this for incoming requests: plain HTTP sent to the TLS port.
    # Use https:// on server.port, or add a separate HTTP connector that redirects to HTTPS.

Erreurs associées

Parcourir toute la base de données des erreurs de signature