Сервер TLS делает что-то, чего я не понимаю.
Теперь клиент принимает ACK, начинает отправлять данные. Но серверные ACK затем отправляют «зашифрованное предупреждение» и FIN.
Это произошло сразу после замены сертификатов. Сертификат, представленный в подтверждении SSL, является новым ключом.
Кому-нибудь?
Вероятно, это связано с проблемой SNI с клиентом или каким-либо устройством посередине, например с балансировщиком нагрузки. Устройство балансировки нагрузки должно иметь возможность передавать имя сервера внутреннему хосту как часть начального приветствия клиента. видеть https://en.m.wikipedia.org/wiki/Server_Name_Indication
Самый важный пакет - это «Зашифрованное предупреждение», поскольку он содержит причину закрытия соединения.
Похоже, это ошибка проверки. Это означает, что сертификат не является доверенным или недействительным. Но настоящая причина - отправлено через Протокол предупреждений TLS
Я столкнулся с аналогичной проблемой с pure-ftpd
в явном режиме TLS (сервер FTPS).
Однако в моем случае было нет Encrypted Alert
отправлено с сервера; он просто Fin'd сразу после обмена ключами (Change Cipher Spec, Finished
сообщение с сервера → FIN с сервера). Следующий, клиент отправил Encrypted alert
, код уровня 1 0 Close Notify
(что ожидаемо - в отличие от сервера FIN).
Это произошло только с одним конкретным клиентом (прошивкой устройства) и не воспроизводилось с другими клиентами ftps.
Я не раскопал корень проблемы, но подозреваю, что мы столкнулись с ошибка сервера. pure-ftpd
использует подобную Apache модель fork-per-connection; и я заметил сбой дочернего процесса в gdb (выход с кодом -1) - что, конечно же, приводит к тому, что ОС закрывает сокет FD и отправляет FIN.
Еще одна причина сказать, что это ошибка сервера в моем случае - поведение перестало воспроизводиться, как только мы заменили ftps-сервер на другую реализацию, proftpd
.
Я не думаю, что это соответствует случаю OP - там сервер завершает соединение подходящим для TLS способом, с зашифрованным предупреждением - но, тем не менее, это нужно учитывать для всех, кто попадает на эту страницу.