Перейти к содержимому
ecdsa.com
Java (JSSE)Java

Сообщение об ошибке

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

Также выводится как

  • Unsupported or unrecognized SSL message

JDK 25 выводит один и тот же текст на стороне клиента и на сервере JSSE, который получает обычный HTTP (оба случая проверены). Если другая сторона ничего не отправляет и закрывает соединение, Java вместо этого сообщает «Remote host terminated the handshake».

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

Что это означает

Вместо записи TLS в JSSE пришли байты, которые нельзя разобрать как запись TLS: чаще всего это текст HTTP-ответа от сервера, работающего по обычному HTTP. На стороне клиента это значит, что https:// использован для порта, который не работает по TLS; на стороне сервера (Tomcat или Netty, принимающие TLS) — что клиент отправил обычный HTTP на TLS-порт. Сертификат здесь ни при чём.

Почему это происходит

Как исправить

  1. 1.

    Проверьте, по какому протоколу работает порт

    Если порт отвечает по обычному HTTP, используйте http:// или настоящий 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.

    Почтовые клиенты и клиенты каталогов: согласуйте режим TLS и порт

    Используйте STARTTLS на порту отправки (587), а неявный TLS — только на 465 (или ldaps:// на 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.

    Владельцам серверов: разделите порты HTTP и HTTPS

    Направьте клиентов и проверки состояния на https:// или откройте отдельный коннектор с обычным HTTP, который перенаправляет на 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.

Связанные ошибки

Открыть всю базу ошибок подписей