如何使 OpenSSL C 服务器仅支持 TLS 1.3?

Posted

技术标签:

【中文标题】如何使 OpenSSL C 服务器仅支持 TLS 1.3?【英文标题】:How to make OpenSSL C server only support TLS 1.3? 【发布时间】:2021-06-27 01:46:35 【问题描述】:

我们有一个使用 OpenSSL API 的 Linux C 程序,充当 TLS 服务器。它目前的代码为:

  context = SSL_CTX_new(TLS_method());

OpenSSL v1.1.1 手册页上说将支持 SSLv3、TLSv1、TLSv1.1、TLSv1.2 和 TLSv1.3。虽然我们现在有一个只支持 TLS 1.3 的新要求。设置 SSL_CTX_set_min_proto_version(TLS1_3_VERSION) 可以解决问题吗?或者服务器是否有其他实用的方法来拒绝版本低于 TLS 1.3 的客户端连接?

非常感谢。

【问题讨论】:

【参考方案1】:

只需拨打SSL_CTX_set_min_proto_version(context, TLS1_3_VERSION); 即可。这会限制从此上下文创建的会话不使用低于 1.3 的 TLS 版本。

此外,您可以使用TLS_server_method 创建一个上下文对象,该对象将创建默认为服务器模式的会话。

【讨论】:

【参考方案2】:

另一个类似于已经发布的解决方案是使用SSL_CTX_set_options 它允许您通过所有您想忽略的协议,例如

SSL_OP_NO_SSLv3, SSL_OP_NO_TLSv1, SSL_OP_NO_TLSv1_1, SSL_OP_NO_TLSv1_2

【讨论】:

以上是关于如何使 OpenSSL C 服务器仅支持 TLS 1.3?的主要内容,如果未能解决你的问题,请参考以下文章

什么是支持TLS 1.2的libcurl的最低版本?

验证 curl 是不是使用 TLS

如何创建仅支持TLS 1.3的tlslite-ng服务器?

SSL/TLS深度解析--OpenSSL 生成自签证书

编译支持 TLSv1.1+ 版本 curl

OpenSSL TLS服务器-使用客户端证书白名单