如何让 OpenSSL C 服务器只支持 TLS 1.3?

How to make OpenSSL C server only support TLS 1.3?

我们有一个 Linux C 程序使用 OpenSSL API,充当 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 的客户端连接?

非常感谢。

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

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

另一种类似于已发布的解决方案是使用 SSL_CTX_set_options 这允许您传递所有要忽略的协议,例如

SSL_OP_NO_SSLv3, SSL_OP_NO_TLSv1, SSL_OP_NO_TLSv1_1, SSL_OP_NO_TLSv1_2