TCP/IP套接字无法与TLSv1_2_client_method()建立安全连接



OpenSSL版本:OpenSSL 1.1.0g

开发:lib libssl1.0-Dev

Lang:C++

我有一个客户端/服务器TCP套接字应用程序(C++,Linux)。我已经生成了一个自签名证书,客户端和服务器都使用相同的证书文件(客户端和服务器在同一个盒子上运行)。

要创建证书,我运行以下命令:

openssl genrsa-des3-out服务器.key 2048

openssl x509-req-days 365-in-server.csr-signkey server.key-out server.crt

1/当我实现SSL_CTX*CTX=SSL_CTX_new(SSLv23_method())时使用密码列表时,连接正常,数据可以传输:"ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH">

2/当我使用代码时:SSL_CTX*CTX=SSL_CTX_new(TLSv1_2_client_method())连接未建立,我得到SSL_ERROR_SSL。

如果我将密码列表更改为"DHE-RSA-AES256-GCM-SHA384",它应该可以与TLS一起使用,那也无济于事。我也犯了同样的错误。

3/当我运行:openssl s_client-connect x.x.x:yy时,当服务器运行带有SSLv23_method()的版本时,我得到以下结果:

新增,TLSv1.2,密码为AES256-GCM-SHA384

服务器公钥为2048位

安全的重新协商IS支持

压缩:无

扩展:无

无ALPN协商

SSL会话:

Protocol  : TLSv1.2
Cipher    : AES256-GCM-SHA384

我的问题是:

A/I希望能够使用方法=TLSv1_2_client_method()。我需要用不同的命令参数生成证书吗?

B/为什么情况3/中的openssl s_client使用协议TLSv1.2,而服务器协议是用方法=SSLv23_method()定义的?

使用EC密码需要选择一条曲线(例如,通过调用SSL_CTX_set_ecdh_auto(CTX,1);)。我错过了这个电话。

@Maarten Bodewes:是的,我想使用TLSv1_2_方法,但他们失败了。SSL方法正在工作(但未使用EC密码)。使用上述解决方案,TLSv1_2_方法可用于EC密码。

相关内容

  • 没有找到相关文章

最新更新