OpenSSL KEYUPDATE и «SSL_key_update: неправильная версия ssl» - PullRequest
1 голос
/ 24 октября 2019

Я использую Ubuntu 19.04, которая поставляется с OpenSSL 1.1.1b. Информация о системе ниже. Я сталкиваюсь с SSL_key_update:wrong ssl version при передаче больших документов во время KEYUPDATE.

Я запускаю свой сервер с:

openssl s_server -accept 443 -cert /app/keys/cert.pem  -key /app/keys/private.key

Iя подключаюсь к серверу с помощью следующей команды, используя AES128:

openssl s_client -connect localhost:443 -cipher AES128-GCM-SHA256 -tls1_2

Иногда это работает, особенно если я отправляю менее 100 КБ. Однако при более крупных передачах он обычно останавливается на:

KEYUPDATE
140048546800768:error:1420310A:SSL routines:SSL_key_update:wrong ssl version:../ssl/ssl_lib.c:2090:

Другие тоже это видели , но, похоже, они не пришли к выводу, какой аспект конфигурации вызывает проблему.

Интересно, что если я запускаю более старую версию openssl 1.1.0h-fips s_client на этом же сервере 1.1.1b, он работает просто отлично при использовании тех же параметров -cipher AES128-GCM-SHA256 -tls1_2. И на самом деле он говорит:

Protocol  : TLSv1.2
Cipher    : AES128-GCM-SHA256

Как и клиент 1.1.1b ... просто клиент 1.1.1b, похоже, не работает.

Что такоепроблема, и как я могу это исправить?


Вот информация о системе:

cli5# openssl version -a
OpenSSL 1.1.1b  26 Feb 2019
built on: Wed Apr 17 16:50:04 2019 UTC
platform: debian-amd64
options:  bn(64,64) rc4(16x,int) des(int) blowfish(ptr) 
compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -Wa,--noexecstack -g -O2 -fdebug-prefix-map=/build/openssl-FmdPCA/openssl-1.1.1b=. -fstack-protector-strong -Wformat -Werror=format-security -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DNDEBUG -Wdate-time -D_FORTIFY_SOURCE=2
OPENSSLDIR: "/usr/lib/ssl"
ENGINESDIR: "/usr/lib/x86_64-linux-gnu/engines-1.1"
Seeding source: os-specific
cli5# cat /proc/version
Linux version 5.0.0-17-generic (buildd@lcy01-amd64-015) (gcc version 8.3.0 (Ubuntu 8.3.0-6ubuntu1)) #18-Ubuntu SMP Tue Jun 4 15:34:08 UTC 2019
cli5#

1 Ответ

2 голосов
/ 27 октября 2019

s_client - это инструмент тестирования, который интерпретирует определенные буквы, полученные на stdin, для выполнения определенных операций. Операция KeyUpdate запускается через «K» / «k». Однако KeyUpdate имеет смысл только тогда, когда согласован TLSv1.3. Однако вы явно запросили TLSv1.2 только в командной строке. Использование «K» / «k» в этих обстоятельствах приводит к ошибке «неправильная версия ssl».

Вы можете отключить интерактивные команды, используя опцию «-ign_eof» - хотя это имеет неприятный побочный эффекто сохранении работоспособности s_client даже после того, как все файлы, которые вы пропустили, были отправлены.

...