CL+ SSL Ошибка SSL: небезопасное устаревшее повторное согласование отключено. Как обойти или разрешить?

Я пытаюсь подключиться к конечной точке https, чтобы получить некоторые данные с помощью common-lisp(sbcl). Какое-то время это работало без проблем. Затем однажды я начал получать следующую ошибку

      SSL error queue:
error:0A000152:SSL routines::unsafe legacy renegotiation disabled
   [Condition of type CL+SSL::SSL-ERROR-SSL]

Я пробовал использовать и drakma, и dexador, но вижу одну и ту же ошибку в обоих. Я подтвердил через openssl, что сервер, к которому я пытаюсь подключиться, не поддерживает повторное согласование.

От openssl s_client -connect

      New, TLSv1/SSLv3, Cipher is AES256-GCM-SHA384
Server public key is 2048 bit
Secure Renegotiation IS NOT supported

Я использую OSX, и моя открытая версия ssl - LibreSSL 2.8.3.

Итак, насколько я понимаю, мой клиент пытается инициировать повторное согласование, но сервер отклоняет его. Я действительно не знаю, куда идти дальше, и на данный момент я даже не уверен, на каком уровне действительно существует проблема, openSSL, CL+SSL или клиентские библиотеки http, построенные поверх CL+SSL. Есть ли способ отключить повторное согласование или принудительно установить новое соединение? Есть какие-то настройки, которые мне не хватает?

1 ответ

В Openssl 1.1.1 флаг SSL_OP_LEGACY_SERVER_CONNECT был включен по умолчанию, но по умолчанию он отключен, начиная с Openssl 3.0.0.

проверьте статью ниже

      SSL_CTX_set_options(ssl_ctx, SSL_OP_LEGACY_SERVER_CONNECT);

https://www.openssl.org/docs/man3.0/man3/SSL_clear_options.html

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