openssl 发请求,被过滤。 20C

我用c++发post请求到服务器,有两台服务器,一台是apache可以联通,一台是f5无法联通。后来知道了是f5那一台有一个过滤条件,!LOW:!SSLv3:!MD5:!RC4-SHA:!EXPORT:!DHE:!DES:!DES-CBC3-SHA:ECDHE+AES-GCM:DHE+AES-GCM:ECDHE+AES:!ECDHE-RSA-DES-CBC3-SHA:DHE+AES:AES-GCM+RSA:RSA+AES:RSA+3DES:@SPEED 。!是禁止的意思。我要怎么改?有大神知道吗?菜鸟我折腾一周了,还没搞定。
我是用c++的openssl-0.9.8e ;xerces-c-src_2_8_0; xml-security-c-1.4.0

//首先是 用ip和端口建立socket连接;
//然后代码如下:
SSL_CTX_new(TLSv1_client_method());
m_Socket.ssl = SSL_new(m_Socket.ctx);
//ret=SSL_CTX_set_cipher_list(m_Socket.ctx,"RSA+3DES");
connect(m_Socket.sock,(sockaddr*)&(m_szWtParam.addr),sizeof(m_szWtParam.addr));
ret=SSL_set_fd(m_Socket.ssl, m_Socket.sock);
ret=SSL_connect(m_Socket.ssl);
fd_set sock_set;
FD_ZERO(&sock_set);
FD_SET(m_Socket.ssl, &sock_set);
select_ret = ::select(0, NULL, &sock_set, NULL, &timeout);
SSL_write(m_Socket.ssl, pMsg, strlen(pMsg));
在f5的机器上,SSL_write处总是返回-1,貌似SSL_connect处就开始失败了。

代码大体上是正确的,能联通apche的机器,能联通去掉过滤条件的f5机器,但是不能联通加上过滤条件的f5机器。请问我的代码是要调整哪些?要更改什么吗?
我小菜鸟,求指导。

3个回答

这个不是禁止,是它做了安全策略,对于这些低版本的加密cipher等是禁止握手连接的,你需要把你代码中用更安全的加密算法套件

liu696639
zealot叉叉 那我要如何写代码进行连接呢?能指导一下吗?
接近 2 年之前 回复

!LOW:!SSLv3:!MD5:!RC4-SHA:!EXPORT:!DHE:!DES:!DES-CBC3-SHA:ECDHE+AES-GCM:DHE+AES-GCM:ECDHE+AES:!ECDHE-RSA-DES-CBC3-SHA:DHE+AES:AES-GCM+RSA:RSA+AES:RSA+3DES:@SPEED 。 这个过滤条件是什么意思?我应该怎么编码,发post请求呢?

可能封装的通信openssl加密协议版本太低。建议使用带openssl的libcurl库进行post提交测试一下。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!