Сбой рукопожатия с клиентом TLS1.2 и сервером TLS1.3

После обновления openssl до версии 1.1.1 у меня есть ценарий, в котором мой клиент ( odbc) работает на TLS1.2, а мой сервер (база данных) работает на TLS 1.3, и происходит сбой со следующей ошибкой на стороне клиента.

"Причина сбоя рукопожатия SSL [ошибка:1407743E: подпрограммы SSL:SSL23_GET_SERVER_HELLO: оповещение tlsv1 о неприемлемом отказе]".

В документации TLS 1.3 было написано, что защита от отказов включена по умолчанию, и когда клиент TLS 1.2 связывается с сервером TLS 1.3, сервер отправляет специальные байты для защиты от отказов.

Ниже приведены мои сомнения. - Должен ли я обрабатывать эти специальные байты на моем клиенте? - Есть ли какая-либо другая обработка, которая необходима клиенту TLS 1.2 для связи с сервером TLS 1.3? - Или есть какая-то другая причина неудачи?

0 ответов

Я предполагаю, что это то, что случилось:

1) Клиент отправляет TLS 1.2 рукопожатие
2) Сервер закрывает соединение, потому что поддерживает только TLS 1.3
3) Клиент повторяет попытку с помощью квитирования TLS 1.1 с резервным SCSV (см. RFC 7507).
4) Сервер отправляет сообщение об ошибке: неуместный резервный

Начальное соединение не удается (шаг 2), потому что клиент запрашивает 1.2, а сервер не поддерживает его. Клиент повторяет попытку с 1.1, если сервер может поддерживать эту версию. Резервный SCSV отправляется, чтобы указать, что 1.1 не является самой высокой версией, которую поддерживает клиент.

По данным SCSV RFC (7507):

Если TLS_FALLBACK_SCSV появляется в ClientHello.cipher_suites и наивысшая версия протокола, поддерживаемая сервером, выше, чем версия, указанная в ClientHello.client_version, сервер ДОЛЖЕН ответить фатальным предупреждением о неприемлемом падении.

Чтобы ответить на ваш вопрос, я полагаю, что вы упомянули специальные байты SCSV, но они отправляются клиентом и обрабатываются сервером, поэтому на стороне клиента ничего не нужно делать. Я полагаю, что сбой происходит из-за того, что клиент и сервер не имеют общей версии TLS для связи. Если клиент поддерживает только 1.2, а сервер поддерживает только 1.3, он не сможет договориться о версии, и соединение не будет установлено. Включение TLS 1.2 на сервере или 1.3 на клиенте должно позволить им общаться.

Другие вопросы по тегам