锐英源软件
第一信赖

精通

英语

开源

擅长

开发

培训

胸怀四海 

第一信赖

当前位置:锐英源 / 开源技术 / openssl开源 / openssl没有共享的加解密组件
隶属项目
openssl开源技术基地
服务方向
人工智能数据处理
人工智能培训
kaldi数据准备
小语种语音识别
语音识别标注
语音识别系统
语音识别转文字
kaldi开发技术服务
软件开发
运动控制卡上位机
机械加工软件
软件开发培训
Java 安卓移动开发
VC++
C#软件
汇编和破解
驱动开发
联系方式
固话:0371-63888850
手机:138-0381-0136
Q Q:396806883
微信:ryysoft

openssl没有共享的加解密组件


提问

我想用EDH-RSA-DES-CBC3-SHA组件来测试TLS1.0连接,我用命令s_server和s_client来测试都正常,连接和数据交换都对了。

openssl s_server -accept 4433 -cert server.pem -key serverkey.pem -cipher EDH-RSA-DES-CBC3-SHA -tls1
openssl s_client -connect 127.0.0.1:443 -cipher EDH-RSA-DES-CBC3-SHA -tls1
Shared ciphers:EDH-RSA-DES-CBC3-SHA

现在我用openssl写了服务器代码。再用s_client连接我写的服务器,连接失败,有如下提示:

3077613304:error:1408A0C1:SSL routines:SSL3_GET_CLIENT_HELLO:no shared cipher:s3_srvr.c:1361

我用下面查找命令检查了加解密组件的存在情况,绝对没问题,应该都支持我代码、s_server和s_client。

cat /proc/9515/maps | awk '{print $6}' | grep '\.so' | sort | uniq | grep -e ssl -e libcrypto


/usr/lib/libcrypto.so.1.0.1e

/usr/lib/libssl.so.1.0.1e

然后用其它加解密组件AES128-SHA,s_client能够正常工作。下面是我的服务器端代码:

SSL_CTX* InitServerCTX(void)
{
    SSL_CTX *ctx = NULL;
    SSL_library_init();
    OpenSSL_add_all_algorithms();
    SSL_load_error_strings(); 

    ctx = SSL_CTX_new(TLSv1_server_method());
    SSL_CTX_set_cipher_list(ctx,"EDH-RSA-DES-CBC3-SHA"); // Returns 1

    SSL_CTX_use_certificate_chain_file(ctx, "server.pem");
    SSL_CTX_use_PrivateKey_file(ctx, "serverkey.pem", SSL_FILETYPE_PEM);

    return ctx;
}

为什么我代码报错,但s_server不报呢?

回答

参考https://linux.die.net/man/3/ssl_ctx_set_tmp_dh上的代码为ctx设置DH参数就可以解决问题。注意s_server使用52位DH参数,所以类似wget会失败,因为wget会拒绝小字段长度。

友情链接
版权所有 Copyright(c)2004-2021 锐英源软件
公司注册号:410105000449586 豫ICP备08007559号 最佳分辨率 1024*768
地址:郑州大学北校区院(文化路97号院)内