Я столкнулся с этой проблемой, когда не могу отправить шифр 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");
....
}