- Вопрос или проблема
- Конфигурация lftp
- Конфигурация gnutls-cli
- Вывод отладки lftp
- Вывод отладки gnutls-cli
- Ответ или решение
- Решение проблемы с подключением lftp к FTPS-сайту на Ubuntu
- Введение
- 1. Обзор ошибки
- 2. Установите правильные параметры подключения
- 3. Проверьте конфигурацию SSL/TLS
- 4. Тестирование с помощью gnutls-cli
- 5. Параллельные настройки и отладка
- 6. Заключение
Вопрос или проблема
У меня есть конкретный ftps сайт, к которому я не могу подключиться с помощью lftp.
Когда я пытаюсь подключиться, я получаю ошибку:
Фатальная ошибка: gnutls_handshake: Получен неожиданный пакет TLS
Когда я использую gnutls-cli для подключения, я нашел правильные настройки для согласования и фактического выполнения команды USER. Что я прошу, так это любые подсказки по правильной конфигурации lftp для части gnutls, чтобы она могла правильно выполнять аутентификацию.
UPDATE: Что я вижу, так это то, что при использовании gnutls-cli он выбирает правильный MAC и шифр, который будет использоваться:
|<4>| HSK[0x24073f0]: Выбранный набор шифров: RSA_3DES_EDE_CBC_SHA1
В отличие от того, когда он вызывается из lftp, он этого не делает:
GNUTLS: ENC[0x1918cd0]: шифр: NULL, MAC: MAC-NULL, Epoch: 0
Ниже приведены мои конфигурации и вывод отладки из lftp и gnutls-cli:
Конфигурация lftp
lftp
set ssl:priority NORMAL:+VERS-TLS1.0:+VERS-TLS1.1:+VERS-TLS1.2
set ftps:initial-prot P
set ftp:ssl-allow yes
set ftp:ssl-force yes
set ftp:ssl-protect-list yes
set ftp:ssl-protect-data yes
set ftp:ssl-protect-fxp yes
set ssl:verify-certificate no
debug 999999999
open ftps://XXX.XXX.XXX.XXX:990
quote USER <username>
Конфигурация gnutls-cli
gnutls-cli --starttls-proto=ftp XXX.XXX.XXX.XXX -p 990 --no-ca-verification -d 5
*Некоторые аспекты были анонимизированы, но ничего о протоколах*
Вывод отладки lftp
lftp
lftp :~> set ssl:priority NORMAL:+VERS-TLS1.0:+VERS-TLS1.1:+VERS-TLS1.2
lftp :~> set ftps:initial-prot P
lftp :~> set ftp:ssl-allow yes
lftp :~> set ftp:ssl-force yes
lftp :~> set ftp:ssl-protect-list yes
lftp :~> set ftp:ssl-protect-data yes
lftp :~> set ftp:ssl-protect-fxp yes
lftp :~> set ssl:verify-certificate no
lftp :~> debug 999999999
lftp :~> open ftps://XXX.XXX.XXX.XXX:990
---- Разрешение адреса хоста...
buffer: EOF на FD 5
---- 1 адрес найден: XXX.XXX.XXX.XXX
lftp XXX.XXX.XXX.XXX:~> quote USER <username>
FileCopy(0x1475a50) переходит в состояние INITIAL
FileCopy(0x1475a50) переходит в состояние DO_COPY
---- попадание в кеш dns
---- попытка номер 1 (max_retries=1000)
---- Подключение к XXX.XXX.XXX.XXX (XXX.XXX.XXX.XXX) порт 990
GNUTLS: ASSERT: common.c:1110
..............
GNUTLS: REC[0x1918cd0]: Выделение эпохи #0
GNUTLS: ASSERT: gnutls_constate.c:596
GNUTLS: REC[0x1918cd0]: Выделение эпохи #1
GNUTLS: HSK[0x1918cd0]: Сохранение набора шифров: GNUTLS_ECDHE_ECDSA_AES_128_GCM_SHA256 (C0.2B)
GNUTLS: HSK[0x1918cd0]: Сохранение набора шифров: GNUTLS_ECDHE_ECDSA_AES_256_GCM_SHA384 (C0.2C)
GNUTLS: HSK[0x1918cd0]: Сохранение набора шифров: GNUTLS_ECDHE_ECDSA_CAMELLIA_128_GCM_SHA256 (C0.86)
GNUTLS: HSK[0x1918cd0]: Сохранение набора шифров: GNUTLS_ECDHE_ECDSA_CAMELLIA_256_GCM_SHA384 (C0.87)
GNUTLS: HSK[0x1918cd0]: Сохранение набора шифров: GNUTLS_ECDHE_ECDSA_AES_128_CBC_SHA1 (C0.09)
GNUTLS: HSK[0x1918cd0]: Сохранение набора шифров: GNUTLS_ECDHE_ECDSA_AES_128_CBC_SHA256 (C0.23)
GNUTLS: HSK[0x1918cd0]: Сохранение набора шифров: GNUTLS_ECDHE_ECDSA_AES_256_CBC_SHA1 (C0.0A)
GNUTLS: HSK[0x1918cd0]: Сохранение набора шифров: GNUTLS_ECDHE_ECDSA_AES_256_CBC_SHA384 (C0.24)
GNUTLS: HSK[0x1918cd0]: Сохранение набора шифров: GNUTLS_ECDHE_ECDSA_CAMELLIA_128_CBC_SHA256 (C0.72)
GNUTLS: HSK[0x1918cd0]: Сохранение набора шифров: GNUTLS_ECDHE_ECDSA_CAMELLIA_256_CBC_SHA384 (C0.73)
GNUTLS: HSK[0x1918cd0]: Сохранение набора шифров: GNUTLS_ECDHE_ECDSA_AES_128_CCM (C0.AC)
GNUTLS: HSK[0x1918cd0]: Сохранение набора шифров: GNUTLS_ECDHE_ECDSA_AES_256_CCM (C0.AD)
GNUTLS: HSK[0x1918cd0]: Сохранение набора шифров: GNUTLS_ECDHE_ECDSA_3DES_EDE_CBC_SHA1 (C0.08)
GNUTLS: HSK[0x1918cd0]: Сохранение набора шифров: GNUTLS_ECDHE_RSA_AES_128_GCM_SHA256 (C0.2F)
GNUTLS: HSK[0x1918cd0]: Сохранение набора шифров: GNUTLS_ECDHE_RSA_AES_256_GCM_SHA384 (C0.30)
GNUTLS: HSK[0x1918cd0]: Сохранение набора шифров: GNUTLS_ECDHE_RSA_CAMELLIA_128_GCM_SHA256 (C0.8A)
GNUTLS: HSK[0x1918cd0]: Сохранение набора шифров: GNUTLS_ECDHE_RSA_CAMELLIA_256_GCM_SHA384 (C0.8B)
GNUTLS: HSK[0x1918cd0]: Сохранение набора шифров: GNUTLS_ECDHE_RSA_AES_128_CBC_SHA1 (C0.13)
GNUTLS: HSK[0x1918cd0]: Сохранение набора шифров: GNUTLS_ECDHE_RSA_AES_128_CBC_SHA256 (C0.27)
GNUTLS: HSK[0x1918cd0]: Сохранение набора шифров: GNUTLS_ECDHE_RSA_AES_256_CBC_SHA1 (C0.14)
GNUTLS: HSK[0x1918cd0]: Сохранение набора шифров: GNUTLS_ECDHE_RSA_AES_256_CBC_SHA384 (C0.28)
GNUTLS: HSK[0x1918cd0]: Сохранение набора шифров: GNUTLS_ECDHE_RSA_CAMELLIA_128_CBC_SHA256 (C0.76)
GNUTLS: HSK[0x1918cd0]: Сохранение набора шифров: GNUTLS_ECDHE_RSA_CAMELLIA_256_CBC_SHA384 (C0.77)
GNUTLS: HSK[0x1918cd0]: Сохранение набора шифров: GNUTLS_ECDHE_RSA_3DES_EDE_CBC_SHA1 (C0.12)
GNUTLS: HSK[0x1918cd0]: Сохранение набора шифров: GNUTLS_RSA_AES_128_GCM_SHA256 (00.9C)
GNUTLS: HSK[0x1918cd0]: Сохранение набора шифров: GNUTLS_RSA_AES_256_GCM_SHA384 (00.9D)
GNUTLS: HSK[0x1918cd0]: Сохранение набора шифров: GNUTLS_RSA_CAMELLIA_128_GCM_SHA256 (C0.7A)
GNUTLS: HSK[0x1918cd0]: Сохранение набора шифров: GNUTLS_RSA_CAMELLIA_256_GCM_SHA384 (C0.7B)
GNUTLS: HSK[0x1918cd0]: Сохранение набора шифров: GNUTLS_RSA_AES_128_CBC_SHA1 (00.2F)
GNUTLS: HSK[0x1918cd0]: Сохранение набора шифров: GNUTLS_RSA_AES_128_CBC_SHA256 (00.3C)
GNUTLS: HSK[0x1918cd0]: Сохранение набора шифров: GNUTLS_RSA_AES_256_CBC_SHA1 (00.35)
GNUTLS: HSK[0x1918cd0]: Сохранение набора шифров: GNUTLS_RSA_AES_256_CBC_SHA256 (00.3D)
GNUTLS: HSK[0x1918cd0]: Сохранение набора шифров: GNUTLS_RSA_CAMELLIA_128_CBC_SHA1 (00.41)
GNUTLS: HSK[0x1918cd0]: Сохранение набора шифров: GNUTLS_RSA_CAMELLIA_128_CBC_SHA256 (00.BA)
GNUTLS: HSK[0x1918cd0]: Сохранение набора шифров: GNUTLS_RSA_CAMELLIA_256_CBC_SHA1 (00.84)
GNUTLS: HSK[0x1918cd0]: Сохранение набора шифров: GNUTLS_RSA_CAMELLIA_256_CBC_SHA256 (00.C0)
GNUTLS: HSK[0x1918cd0]: Сохранение набора шифров: GNUTLS_RSA_AES_128_CCM (C0.9C)
GNUTLS: HSK[0x1918cd0]: Сохранение набора шифров: GNUTLS_RSA_AES_256_CCM (C0.9D)
GNUTLS: HSK[0x1918cd0]: Сохранение набора шифров: GNUTLS_RSA_3DES_EDE_CBC_SHA1 (00.0A)
GNUTLS: HSK[0x1918cd0]: Сохранение набора шифров: GNUTLS_DHE_RSA_AES_128_GCM_SHA256 (00.9E)
GNUTLS: HSK[0x1918cd0]: Сохранение набора шифров: GNUTLS_DHE_RSA_AES_256_GCM_SHA384 (00.9F)
GNUTLS: HSK[0x1918cd0]: Сохранение набора шифров: GNUTLS_DHE_RSA_CAMELLIA_128_GCM_SHA256 (C0.7C)
GNUTLS: HSK[0x1918cd0]: Сохранение набора шифров: GNUTLS_DHE_RSA_CAMELLIA_256_GCM_SHA384 (C0.7D)
GNUTLS: HSK[0x1918cd0]: Сохранение набора шифров: GNUTLS_DHE_RSA_AES_128_CBC_SHA1 (00.33)
GNUTLS: HSK[0x1918cd0]: Сохранение набора шифров: GNUTLS_DHE_RSA_AES_128_CBC_SHA256 (00.67)
GNUTLS: HSK[0x1918cd0]: Сохранение набора шифров: GNUTLS_DHE_RSA_AES_256_CBC_SHA1 (00.39)
GNUTLS: HSK[0x1918cd0]: Сохранение набора шифров: GNUTLS_DHE_RSA_AES_256_CBC_SHA256 (00.6B)
GNUTLS: HSK[0x1918cd0]: Сохранение набора шифров: GNUTLS_DHE_RSA_CAMELLIA_128_CBC_SHA1 (00.45)
GNUTLS: HSK[0x1918cd0]: Сохранение набора шифров: GNUTLS_DHE_RSA_CAMELLIA_128_CBC_SHA256 (00.BE)
GNUTLS: HSK[0x1918cd0]: Сохранение набора шифров: GNUTLS_DHE_RSA_CAMELLIA_256_CBC_SHA1 (00.88)
GNUTLS: HSK[0x1918cd0]: Сохранение набора шифров: GNUTLS_DHE_RSA_CAMELLIA_256_CBC_SHA256 (00.C4)
GNUTLS: HSK[0x1918cd0]: Сохранение набора шифров: GNUTLS_DHE_RSA_AES_128_CCM (C0.9E)
GNUTLS: HSK[0x1918cd0]: Сохранение набора шифров: GNUTLS_DHE_RSA_AES_256_CCM (C0.9F)
GNUTLS: HSK[0x1918cd0]: Сохранение набора шифров: GNUTLS_DHE_RSA_3DES_EDE_CBC_SHA1 (00.16)
GNUTLS: EXT[0x1918cd0]: Отправка расширения EXT MASTER SECRET (0 байт)
GNUTLS: EXT[0x1918cd0]: Отправка расширения ENCRYPT THEN MAC (0 байт)
GNUTLS: EXT[0x1918cd0]: Отправка расширения STATUS REQUEST (5 байт)
GNUTLS: EXT[0x1918cd0]: Отправка расширения SERVER NAME (17 байт)
GNUTLS: EXT[0x1918cd0]: Отправка расширения SAFE RENEGOTIATION (1 байт)
GNUTLS: EXT[0x1918cd0]: Отправка расширения SESSION TICKET (0 байт)
GNUTLS: EXT[0x1918cd0]: Отправка расширения SUPPORTED ECC (12 байт)
GNUTLS: EXT[0x1918cd0]: Отправка расширения SUPPORTED ECC POINT FORMATS (2 байта)
GNUTLS: EXT[0x1918cd0]: отправлено подписание algo (4.1) RSA-SHA256
GNUTLS: EXT[0x1918cd0]: отправлено подписание algo (4.3) ECDSA-SHA256
GNUTLS: EXT[0x1918cd0]: отправлено подписание algo (5.1) RSA-SHA384
GNUTLS: EXT[0x1918cd0]: отправлено подписание algo (5.3) ECDSA-SHA384
GNUTLS: EXT[0x1918cd0]: отправлено подписание algo (6.1) RSA-SHA512
GNUTLS: EXT[0x1918cd0]: отправлено подписание algo (6.3) ECDSA-SHA512
GNUTLS: EXT[0x1918cd0]: отправлено подписание algo (3.1) RSA-SHA224
GNUTLS: EXT[0x1918cd0]: отправлено подписание algo (3.3) ECDSA-SHA224
GNUTLS: EXT[0x1918cd0]: отправлено подписание algo (2.1) RSA-SHA1
GNUTLS: EXT[0x1918cd0]: отправлено подписание algo (2.3) ECDSA-SHA1
GNUTLS: EXT[0x1918cd0]: Отправка расширения СИГНАТУРНЫЕ АЛГОРИТМЫ (22 байта)
GNUTLS: HSK[0x1918cd0]: CLIENT HELLO был в очереди [248 байт]
GNUTLS: REC[0x1918cd0]: Подготовка пакета рукопожатия(22) длиной: 248 и минимальной подкладкой: 0
GNUTLS: ENC[0x1918cd0]: шифр: NULL, MAC: MAC-NULL, Epoch: 0
GNUTLS: REC[0x1918cd0]: Отправленный пакет[1] рукопожатия(22) в эпохе 0 и длиной: 253
GNUTLS: ASSERT: gnutls_buffers.c:1154
GNUTLS: REC[0x1918cd0]: SSL 50.48 Получен пакет неизвестного типа. Epoch 0, длина: 11603
GNUTLS: ASSERT: gnutls_record.c:572
GNUTLS: Получен пакет записи неизвестного типа 50
GNUTLS: ASSERT: gnutls_record.c:1076
GNUTLS: ASSERT: gnutls_record.c:1158
GNUTLS: ASSERT: gnutls_buffers.c:1409
GNUTLS: ASSERT: gnutls_handshake.c:1446
GNUTLS: ASSERT: gnutls_handshake.c:2762
**** gnutls_handshake: Получен неожиданный пакет TLS.
GNUTLS: REC[0x1918cd0]: Начало очистки эпохи
GNUTLS: REC[0x1918cd0]: Конец очистки эпохи
GNUTLS: REC[0x1918cd0]: Эпоха #0 освобождена
GNUTLS: REC[0x1918cd0]: Эпоха #1 освобождена
---- Закрытие управляющего сокета
quote: USER <username>: Фатальная ошибка: gnutls_handshake: Получен неожиданный пакет TLS.
Вывод отладки gnutls-cli
gnutls-cli --starttls-proto=ftp XXX.XXX.XXX.XXX -p 990 --no-ca-verification -d 5
|<3>| ASSERT: common.c:1110...
Обработано 173 сертификата CA.
Разрешение 'XXX.XXX.XXX.XXX'...
Подключение к 'XXX.XXX.XXX.XXX:990'...
|<5>| REC[0x24073f0]: Выделение эпохи #0
|<3>| ASSERT: gnutls_constate.c:596
|<5>| REC[0x24073f0]: Выделение эпохи #1
|<4>| HSK[0x24073f0]: Сохранение набора шифров: GNUTLS_ECDHE_ECDSA_AES_128_GCM_SHA256 (C0.2B)
|<4>| HSK[0x24073f0]: Сохранение набора шифров: GNUTLS_ECDHE_ECDSA_AES_256_GCM_SHA384 (C0.2C)
|<4>| HSK[0x24073f0]: Сохранение набора шифров: GNUTLS_ECDHE_ECDSA_CAMELLIA_128_GCM_SHA256 (C0.86)
|<4>| HSK[0x24073f0]: Сохранение набора шифров: GNUTLS_ECDHE_ECDSA_CAMELLIA_256_GCM_SHA384 (C0.87)
|<4>| HSK[0x24073f0]: Сохранение набора шифров: GNUTLS_ECDHE_ECDSA_AES_128_CBC_SHA1 (C0.09)
|<4>| HSK[0x24073f0]: Сохранение набора шифров: GNUTLS_ECDHE_ECDSA_AES_128_CBC_SHA256 (C0.23)
|<4>| HSK[0x24073f0]: Сохранение набора шифров: GNUTLS_ECDHE_ECDSA_AES_256_CBC_SHA1 (C0.0A)
|<4>| HSK[0x24073f0]: Сохранение набора шифров: GNUTLS_ECDHE_ECDSA_AES_256_CBC_SHA384 (C0.24)
|<4>| HSK[0x24073f0]: Сохранение набора шифров: GNUTLS_ECDHE_ECDSA_CAMELLIA_128_CBC_SHA256 (C0.72)
|<4>| HSK[0x24073f0]: Сохранение набора шифров: GNUTLS_ECDHE_ECDSA_CAMELLIA_256_CBC_SHA384 (C0.73)
|<4>| HSK[0x24073f0]: Сохранение набора шифров: GNUTLS_ECDHE_ECDSA_AES_128_CCM (C0.AC)
|<4>| HSK[0x24073f0]: Сохранение набора шифров: GNUTLS_ECDHE_ECDSA_AES_256_CCM (C0.AD)
|<4>| HSK[0x24073f0]: Сохранение набора шифров: GNUTLS_ECDHE_ECDSA_3DES_EDE_CBC_SHA1 (C0.08)
|<4>| HSK[0x24073f0]: Сохранение набора шифров: GNUTLS_ECDHE_RSA_AES_128_GCM_SHA256 (C0.2F)
|<4>| HSK[0x24073f0]: Сохранение набора шифров: GNUTLS_ECDHE_RSA_AES_256_GCM_SHA384 (C0.30)
|<4>| HSK[0x24073f0]: Сохранение набора шифров: GNUTLS_ECDHE_RSA_CAMELLIA_128_GCM_SHA256 (C0.8A)
|<4>| HSK[0x24073f0]: Сохранение набора шифров: GNUTLS_ECDHE_RSA_CAMELLIA_256_GCM_SHA384 (C0.8B)
|<4>| HSK[0x24073f0]: Сохранение набора шифров: GNUTLS_ECDHE_RSA_AES_128_CBC_SHA1 (C0.13)
|<4>| HSK[0x24073f0]: Сохранение набора шифров: GNUTLS_ECDHE_RSA_AES_128_CBC_SHA256 (C0.27)
|<4>| HSK[0x24073f0]: Сохранение набора шифров: GNUTLS_ECDHE_RSA_AES_256_CBC_SHA1 (C0.14)
|<4>| HSK[0x24073f0]: Сохранение набора шифров: GNUTLS_ECDHE_RSA_AES_256_CBC_SHA384 (C0.28)
|<4>| HSK[0x24073f0]: Сохранение набора шифров: GNUTLS_ECDHE_RSA_CAMELLIA_128_CBC_SHA256 (C0.76)
|<4>| HSK[0x24073f0]: Сохранение набора шифров: GNUTLS_ECDHE_RSA_CAMELLIA_256_CBC_SHA384 (C0.77)
|<4>| HSK[0x24073f0]: Сохранение набора шифров: GNUTLS_ECDHE_RSA_3DES_EDE_CBC_SHA1 (C0.12)
|<4>| HSK[0x24073f0]: Сохранение набора шифров: GNUTLS_RSA_AES_128_GCM_SHA256 (00.9C)
|<4>| HSK[0x24073f0]: Сохранение набора шифров: GNUTLS_RSA_AES_256_GCM_SHA384 (00.9D)
|<4>| HSK[0x24073f0]: Сохранение набора шифров: GNUTLS_RSA_CAMELLIA_128_GCM_SHA256 (C0.7A)
|<4>| HSK[0x24073f0]: Сохранение набора шифров: GNUTLS_RSA_CAMELLIA_256_GCM_SHA384 (C0.7B)
|<4>| HSK[0x24073f0]: Сохранение набора шифров: GNUTLS_RSA_AES_128_CBC_SHA1 (00.2F)
|<4>| HSK[0x24073f0]: Сохранение набора шифров: GNUTLS_RSA_AES_128_CBC_SHA256 (00.3C)
|<4>| HSK[0x24073f0]: Сохранение набора шифров: GNUTLS_RSA_AES_256_CBC_SHA1 (00.35)
|<4>| HSK[0x24073f0]: Сохранение набора шифров: GNUTLS_RSA_AES_256_CBC_SHA256 (00.3D)
|<4>| HSK[0x24073f0]: Сохранение набора шифров: GNUTLS_RSA_CAMELLIA_128_CBC_SHA1 (00.41)
|<4>| HSK[0x24073f0]: Сохранение набора шифров: GNUTLS_RSA_CAMELLIA_128_CBC_SHA256 (00.BA)
|<4>| HSK[0x24073f0]: Сохранение набора шифров: GNUTLS_RSA_CAMELLIA_256_CBC_SHA1 (00.84)
|<4>| HSK[0x24073f0]: Сохранение набора шифров: GNUTLS_RSA_CAMELLIA_256_CBC_SHA256 (00.C0)
|<4>| HSK[0x24073f0]: Сохранение набора шифров: GNUTLS_RSA_AES_128_CCM (C0.9C)
|<4>| HSK[0x24073f0]: Сохранение набора шифров: GNUTLS_RSA_AES_256_CCM (C0.9D)
|<4>| HSK[0x24073f0]: Сохранение набора шифров: GNUTLS_RSA_3DES_EDE_CBC_SHA1 (00.0A)
|<4>| HSK[0x24073f0]: Сохранение набора шифров: GNUTLS_DHE_RSA_AES_128_GCM_SHA256 (00.9E)
|<4>| HSK[0x24073f0]: Сохранение набора шифров: GNUTLS_DHE_RSA_AES_256_GCM_SHA384 (00.9F)
|<4>| HSK[0x24073f0]: Сохранение набора шифров: GNUTLS_DHE_RSA_CAMELLIA_128_GCM_SHA256 (C0.7C)
|<4>| HSK[0x24073f0]: Сохранение набора шифров: GNUTLS_DHE_RSA_CAMELLIA_256_GCM_SHA384 (C0.7D)
|<4>| HSK[0x24073f0]: Сохранение набора шифров: GNUTLS_DHE_RSA_AES_128_CBC_SHA1 (00.33)
|<4>| HSK[0x24073f0]: Сохранение набора шифров: GNUTLS_DHE_RSA_AES_128_CBC_SHA256 (00.67)
|<4>| HSK[0x24073f0]: Сохранение набора шифров: GNUTLS_DHE_RSA_AES_256_CBC_SHA1 (00.39)
|<4>| HSK[0x24073f0]: Сохранение набора шифров: GNUTLS_DHE_RSA_AES_256_CBC_SHA256 (00.6B)
|<4>| HSK[0x24073f0]: Сохранение набора шифров: GNUTLS_DHE_RSA_CAMELLIA_128_CBC_SHA1 (00.45)
|<4>| HSK[0x24073f0]: Сохранение набора шифров: GNUTLS_DHE_RSA_CAMELLIA_128_CBC_SHA256 (00.BE)
|<4>| HSK[0x24073f0]: Сохранение набора шифров: GNUTLS_DHE_RSA_CAMELLIA_256_CBC_SHA1 (00.88)
|<4>| HSK[0x24073f0]: Сохранение набора шифров: GNUTLS_DHE_RSA_CAMELLIA_256_CBC_SHA256 (00.C4)
|<4>| HSK[0x24073f0]: Сохранение набора шифров: GNUTLS_DHE_RSA_AES_128_CCM (C0.9E)
|<4>| HSK[0x24073f0]: Сохранение набора шифров: GNUTLS_DHE_RSA_AES_256_CCM (C0.9F)
|<4>| HSK[0x24073f0]: Сохранение набора шифров: GNUTLS_DHE_RSA_3DES_EDE_CBC_SHA1 (00.16)
|<4>| EXT[0x24073f0]: Отправка расширения EXT MASTER SECRET (0 байт)
|<4>| EXT[0x24073f0]: Отправка расширения ENCRYPT THEN MAC (0 байт)
|<4>| EXT[0x24073f0]: Отправка расширения STATUS REQUEST (5 байт)
|<4>| EXT[0x24073f0]: Отправка расширения SAFE RENEGOTIATION (1 байт)
|<4>| EXT[0x24073f0]: Отправка расширения SESSION TICKET (0 байт)
|<4>| EXT[0x24073f0]: Отправка расширения SUPPORTED ECC (12 байт)
|<4>| EXT[0x24073f0]: Отправка расширения SUPPORTED ECC POINT FORMATS (2 байта)
|<4>| EXT[0x24073f0]: отправлено подписание algo (4.1) RSA-SHA256
|<4>| EXT[0x24073f0]: отправлено подписание algo (4.3) ECDSA-SHA256
|<4>| EXT[0x24073f0]: отправлено подписание algo (5.1) RSA-SHA384
|<4>| EXT[0x24073f0]: отправлено подписание algo (5.3) ECDSA-SHA384
|<4>| EXT[0x24073f0]: отправлено подписание algo (6.1) RSA-SHA512
|<4>| EXT[0x24073f0]: отправлено подписание algo (6.3) ECDSA-SHA512
|<4>| EXT[0x24073f0]: отправлено подписание algo (3.1) RSA-SHA224
|<4>| EXT[0x24073f0]: отправлено подписание algo (3.3) ECDSA-SHA224
|<4>| EXT[0x24073f0]: отправлено подписание algo (2.1) RSA-SHA1
|<4>| EXT[0x24073f0]: отправлено подписание algo (2.3) ECDSA-SHA1
|<4>| EXT[0x24073f0]: Отправка расширения СИГНАТУРНЫЕ АЛГОРИТМЫ (22 байта)
|<4>| HSK[0x24073f0]: CLIENT HELLO был в очереди [227 байта]
|<5>| REC[0x24073f0]: Подготовка пакета рукопожатия(22) длиной: 227 и минимальной подкладкой: 0
|<5>| REC[0x24073f0]: Отправленный пакет[1] рукопожатия(22) в эпохе 0 и длиной: 232
|<3>| ASSERT: gnutls_buffers.c:1154
|<5>| REC[0x24073f0]: SSL 3.1 Пакет рукопожатия получен. Epoch 0, длина: 950
|<5>| REC[0x24073f0]: Ожидался пакет рукопожатия(22)
|<5>| REC[0x24073f0]: Получен пакет рукопожатия(22) длиной: 950
|<5>| REC[0x24073f0]: Расшифрован пакет[0] рукопожатия(22) длиной: 950
|<4>| HSK[0x24073f0]: SERVER HELLO (2) был получен. Длина 77[946], фрагментный смещение 0, длина фрагмента: 77, последовательность: 0
|<4>| HSK[0x24073f0]: Версия сервера: 3.1
|<4>| HSK[0x24073f0]: Длина SessionID: 32
|<4>| HSK[0x24073f0]: SessionID: 000003031e05c5fea2ec00000000000000000000000000005b69ab4d00000001
|<4>| HSK[0x24073f0]: Выбранный набор шифров: RSA_3DES_EDE_CBC_SHA1
|<4>| HSK[0x24073f0]: Выбранный метод сжатия: NULL (0)
|<4>| EXT[0x24073f0]: Парсинг расширения 'SAFE RENEGOTIATION/65281' (1 байт)
|<4>| HSK[0x24073f0]: Безопасная переаутентификация успешна
|<3>| ASSERT: gnutls_buffers.c:1154
|<4>| HSK[0x24073f0]: CERTIFICATE (11) был получен. Длина 861[865], фрагментный смещение 0, длина фрагмента: 861, последовательность: 0
|<3>| ASSERT: gnutls_buffers.c:1392
|<3>| ASSERT: extensions.c:65
- Тип сертификата: X.509
- Получен список сертификатов из 1 сертификатов.
- Информация о сертификате[0]:
|<3>| ASSERT: dn.c:250
|<3>| ASSERT: dn.c:250
|<3>| ASSERT: extensions.c:65
- subject `<example.cert>', RSA ключ 1024 бит, подписан с использованием RSA-SHA1, активирован `2009-09-10 00:00:00 UTC', истекает `2021-04-24 23:59:59 UTC', отпечаток SHA-1 `555555555555555555555555555555555555555'
Идентификатор публичного ключа:
PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
Случайное искусство публичного ключа:
+--[ RSA 1024]----+
| o.o |
| .= E.|
| .B.o|
| .= |
| S = .|
| . o . .= |
| . . . oo.|
| . o+|
| .o.|
+-----------------+
|<3>| ASSERT: gnutls_buffers.c:1154
|<4>| HSK[0x24073f0]: SERVER HELLO DONE (14) был получен. Длина 0[0], фрагментный смещение 0, длина фрагмента: 1, последовательность: 0
|<3>| ASSERT: gnutls_buffers.c:1145
|<3>| ASSERT: gnutls_buffers.c:1392
|<3>| ASSERT: gnutls_buffers.c:1374
|<3>| ASSERT: extensions.c:65
|<4>| HSK[0x24073f0]: CLIENT KEY EXCHANGE был в очереди [134 байта]
|<4>| REC[0x24073f0]: Отправлен ChangeCipherSpec
|<5>| REC[0x24073f0]: Инициализация эпохи #1
|<5>| REC[0x24073f0]: Эпоха #1 готова
|<4>| HSK[0x24073f0]: Набор шифров: RSA_3DES_EDE_CBC_SHA1
|<4>| HSK[0x24073f0]: Инициализация внутренних [запись] шифровых сессий
|<4>| HSK[0x24073f0]: запись tls-unique CB (send)
|<4>| HSK[0x24073f0]: FINISHED был в очереди [16 байт]
|<5>| REC[0x24073f0]: Подготовка пакета рукопожатия(22) длиной: 134 и минимальной подкладкой: 0
|<5>| REC[0x24073f0]: Отправленный пакет[2] рукопожатия(22) в эпохе 0 и длиной: 139
|<5>| REC[0x24073f0]: Подготовка пакета ChangeCipherSpec(20) длиной: 1 и минимальной подкладкой: 0
|<5>| REC[0x24073f0]: Отправленный пакет[3] ChangeCipherSpec(20) в эпохе 0 и длиной: 6
|<5>| REC[0x24073f0]: Подготовка пакета рукопожатия(22) длиной: 16 и минимальной подкладкой: 0
|<5>| REC[0x24073f0]: Отправленный пакет[1] рукопожатия(22) в эпохе 1 и длиной: 45
|<5>| REC[0x24073f0]: SSL 3.1 Пакет ChangeCipherSpec получен. Epoch 0, длина: 1
|<5>| REC[0x24073f0]: Ожидался пакет ChangeCipherSpec(20)
|<5>| REC[0x24073f0]: Получен пакет ChangeCipherSpec(20) длиной: 1
|<5>| REC[0x24073f0]: Расшифрован пакет[1] ChangeCipherSpec(20) длиной: 1
|<4>| HSK[0x24073f0]: Набор шифров: RSA_3DES_EDE_CBC_SHA1
|<3>| ASSERT: gnutls_buffers.c:1154
|<5>| REC[0x24073f0]: SSL 3.1 Пакет рукопожатия получен. Epoch 0, длина: 40
|<5>| REC[0x24073f0]: Ожидался пакет рукопожатия(22)
|<5>| REC[0x24073f0]: Получен пакет рукопожатия(22) длиной: 40
|<5>| REC[0x24073f0]: Расшифрован пакет[0] рукопожатия(22) длиной: 16
|<4>| HSK[0x24073f0]: FINISHED (20) был получен. Длина 12[12], фрагментный смещение 0, длина фрагмента: 12, последовательность: 0
|<5>| REC[0x24073f0]: Начало очистки эпохи
|<5>| REC[0x24073f0]: Эпоха #0 освобождена
|<5>| REC[0x24073f0]: Конец очистки эпохи
- Описание: (TLS1.0)-(RSA)-(3DES-CBC)-(SHA1)
- Идентификатор сессии: 00:00:03:03:1E:05:C5:FE:A2:EC:00:00:00:00:00:00:00:00:00:00:00:00:00:00:5B:69:AB:4D:00:00:00:01
|<3>| ASSERT: server_name.c:298
- Версия: TLS1.0
- Обмен ключами: RSA
- Шифр: 3DES-CBC
- MAC: SHA1
- Сжатие: NULL
|<3>| ASSERT: status_request.c:350
|<3>| ASSERT: gnutls_ui.c:797
- Опции: безопасная переаутентификация,
|<3>| ASSERT: srtp.c:317
|<3>| ASSERT: alpn.c:227
- Рукопожатие было завершено
|<3>| ASSERT: status_request.c:350
- Простой режим клиента:
@Ptier, пожалуйста, попробуйте заменить
open ftps://XXX.XXX.XXX.XXX:990
на
set ftp:ssl-auth TLS
open ftp://XXX.XXX.XXX.XXX:990
Тогда ошибка “cd: Фатальная ошибка: gnutls_handshake: Получен неожиданный пакет TLS.” исчезнет.
Ответ или решение
Решение проблемы с подключением lftp к FTPS-сайту на Ubuntu
Введение
Ваша проблема с подключением к FTPS-сайту через lftp
и получением ошибки Fatal error: gnutls_handshake: An unexpected TLS packet was received
может быть связана с несколькими факторами, включая настройки TLS/SSL, конфигурацию cipher suites и способ аутентификации. В данном ответе мы рассмотрим шаги, которые вам следует предпринять для устранения этой проблемы.
1. Обзор ошибки
Сообщение об ошибке указывает на то, что во время рукопожатия TLS получен неожиданный пакет. Это может произойти, если сервер не поддерживает использованные клиентом протоколы или шифры, или если неверный порт используется для подключения.
2. Установите правильные параметры подключения
На основе вашего текущего конфигурационного файла lftp
, вы можете начать с изменения способа аутентификации и используемого протокола.
Измените процесс подключения
Попробуйте заменить строку:
open ftps://XXX.XXX.XXX.XXX:990
на:
set ftp:ssl-auth TLS
open ftp://XXX.XXX.XXX.XXX:990
Эта настройка указывает клиенту использовать протокол TLS для аутентификации, что может помочь избежать ошибки рукопожатия.
3. Проверьте конфигурацию SSL/TLS
Используйте следующие команды для установки параметров lftp
, которые соответствуют поддерживаемым ciphers вашего сервера:
set ssl:priority NORMAL:+VERS-TLS1.0:+VERS-TLS1.1:+VERS-TLS1.2
set ftp:ssl-allow yes
set ftp:ssl-force yes
set ftp:ssl-protect-list yes
set ftp:ssl-protect-data yes
set ftp:ssl-protect-fxp yes
set ssl:verify-certificate no
4. Тестирование с помощью gnutls-cli
Вы уже отметили, что gnutls-cli
успешно подключается к серверу. Используйте gnutls-cli
для проверки доступных шифров и протоколов передачи данных. Это можно сделать следующим образом:
gnutls-cli --starttls-proto=ftp XXX.XXX.XXX.XXX -p 990 --no-ca-verification -d 5
Обратите внимание на вывод и убедитесь, что используется правильный шифр, такой как RSA_3DES_EDE_CBC_SHA1
, как вы указали.
5. Параллельные настройки и отладка
- Убедитесь, что ваш
lftp
обновлён до последней версии, так как это может повлиять на поддержку TLS и библиотек GnuTLS. - Для дальнейшей отладки можно увеличить количество сообщений в выводе, как вы уже сделали, установив
debug 999999999
.
6. Заключение
Если перечисленные шаги не решат проблему, рекомендую проверить конфигурацию вашего FTPS-сервера. Убедитесь, что он правильно настроен для поддержки подключений от вашего клиента, и что используемые ciphers и протоколы соответствуют клиентской настройке lftp
.
Удачи в устранении вашей проблемы, и пусть наши советы помогут вам успешно подключиться к FTPS-сайту! Если у вас возникнут дополнительные вопросы, не стесняйтесь обращаться за помощью.