Передача HTTPS-файла прекращается при обнаружении 0x1a (замещающий символ) - PullRequest
0 голосов
/ 20 апреля 2019

Я пытаюсь отправить двоичные файлы с помощью сервера openSSL, но передача останавливается непосредственно перед отправкой символа 0x1A.

Я смог отправить текстовые файлы размером 8 МБ +, но с обоими двоичными файлами япопытка отправки, она остановилась после 20 КБ, прямо перед символом 0x1A, поэтому размер файла не является проблемой.Я нахожусь на Windows 10 и использую openSSL для запуска сервера.

winpty openssl s_server -WWW -key key.pem -cert cert.pem -port 8075 

Используя следующую команду, я могу загружать текстовые файлы без каких-либо проблем, но это "не удается", прежде чем весь двоичный файл былотправлено.

winpty curl -v -k https://192.168.1.100:8075/hello-world.bin --output hello-world-recv.bin

Подробное описание команды curl выглядит следующим образом (удалена первая часть, где речь идет о сертификатах и ​​рукопожатии):

GET /hello-world.bin HTTP/1.1
> Host: 192.168.1.100:8075
> User-Agent: curl/7.60.0
> Accept: */*
>
{ [5 bytes data]
* HTTP 1.0, assume close after body
< HTTP/1.0 200 ok
< Content-type: text/plain
<
{ [16339 bytes data]
100 19270    0 19270    0     0  43995      0 --:--:-- --:--:-- --:--:-- 45663
* Closing connection 0
} [5 bytes data]
* TLSv1.2 (OUT), TLS alert, Client hello (1):
} [2 bytes data]

Как мы видим, только 19 КБданных было отправлено, но исходный файл имеет размер 1,2 МБ.

Любая помощь будет оценена, спасибо.

1 Ответ

0 голосов
/ 22 апреля 2019

Проверка в функции OpenSSL-источника www_body в apps/s_server.c (строка 3254 в 1.1.1b): открывает файл в режиме по умолчанию "r", который может быть текстовым режимом в Windows,это означает, что CRLF будет преобразовано в LF, а SUB будет интерпретировано как конец файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...