Шифр OpenSSL 1.1.1e RC4-MD5 не выбран для TLS v1.2 - PullRequest
0 голосов
/ 01 апреля 2020

Я столкнулся с этой проблемой, когда не могу отправить шифр RC4-MD5 на уровне протокола Hello hels tls. мой текущий код использует curl SSL CTX CALLBACK.

вы можете увидеть мой код ниже .... ничего необычного здесь, но последний шифр не go в клиенте привет мои протоколы tls http1.0, tlsv1 .2, я скомпилировал openssl с опцией для слабых шифров (и это работает для шифра DES)

 CURLcode sslctxfun(CURL *curl, void *sslctx, void *parm)
{
  sslctxparm *p = (sslctxparm *) parm;
  SSL_CTX *ctx = (SSL_CTX *) sslctx;

  int ret;
  SSL_CTX_set_max_proto_version(ctx, TLS1_2_VERSION);
  SSL_CTX_set_min_proto_version(ctx, TLS1_2_VERSION);
  ret=SSL_CTX_set_cipher_list(ctx, "AES256-SHA256,AES128-SHA256,AES256-SHA,AES128-SHA,DES-CBC3-SHA,RC4-SHA,RC4-MD5");
.....
  SSL_CTX_set_options(ctx, SSL_OP_ALL);
  SSL_CTX_set_options(ctx, SSL_OP_NO_TICKET);
  SSL_CTX_set_options(ctx, SSL_OP_NO_ENCRYPT_THEN_MAC);
  SSL_CTX_set_options(ctx, SSL_OP_CIPHER_SERVER_PREFERENCE);
  SSL_CTX_set_options(ctx,SSL_OP_NO_RENEGOTIATION);
  SSL_CTX_set_options(ctx, SSL_OP_TLS_ROLLBACK_BUG );
  SSL_CTX_set_options(ctx, SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS );
  SSL_CTX_set_options(ctx, SSL_OP_NO_COMPRESSION );
  SSL_CTX_set_options(ctx, SSL_OP_LEGACY_SERVER_CONNECT );
  SSL_CONF_CTX *cctx;
  cctx = SSL_CONF_CTX_new();
  SSL_CONF_CTX_set_flags(cctx, SSL_CONF_FLAG_FILE);
  SSL_CONF_CTX_set_ssl_ctx(cctx, ctx);
  ret=SSL_CONF_cmd(cctx, "SignatureAlgorithms", "RSA+SHA256:RSA+SHA512:RSA+SHA384:RSA+SHA1");
....
}

1 Ответ

1 голос
/ 02 апреля 2020

Этот набор шифров недоступен на уровне безопасности OpenSSL по умолчанию (уровень 1). Вам необходимо указать ему уровень безопасности 0. Один из способов сделать это - добавить ,@SECLEVEL=0 в конец списка шифров:

ret=SSL_CTX_set_cipher_list(ctx, "AES256-SHA256,AES128-SHA256,AES256-SHA,AES128-SHA,DES-CBC3-SHA,RC4-SHA,RC4-MD5,@SECLEVEL=0");

В качестве альтернативы вы можете установить его, используя SSL_CTX_set_security_level(). См. Справочную страницу для описания уровней:

https://www.openssl.org/docs/man1.1.1/man3/SSL_CTX_set_security_level.html

...