3

我有一个使用socat以下命令的工作客户端/服务器场景:

服务器

socat openssl-listen:5000,reuseaddr,cert=server.pem,cafile=server.crt,verify=0 STDIO

客户

socat stdio openssl-connect:localhost:5000,cert=server.pem,cafile=server.crt,verify=0

这是一个更大系统的一部分,但是上面的命令对于我们想要实现的效果很好。但是,我需要确保 TLS v1.3 正在使用中,并确保它是唯一使用的加密版本。我可以通过以下方式确保使用 1.2 版:

socat - OPENSSL-LISTEN:443,method=TLS1.2,verify=0,cert=cert.pem,key=key.pem

openssl 是最新的(1.1.1 版本),应该支持 TLS1.3

在撰写本文时(2020 年 2 月),我能找到的几乎所有关于 socat 的文档都只提及设置 TLS1.2,而没有提及 TLS1.3。对于openssl命令行,您可以设置-tls1_3,例如:

openssl s_server -accept 443 -tls1_3 -ciphersuites TLS_AES_256_GCM_SHA384 -key key.pem -cert cert.pem

[1] https://8gwifi.org/docs/tlsv13.jsp

此命令有效(与相关s_client命令一起),但我无法获得通过 socat 传入的相同参数。

4

1 回答 1

2

socat版本 1.7.4.0 及更高版本支持openssl-min-proto-version有效值为 的选项 [1] TLS1.3。这将强制使用 TLS v1.3 或更高版本。

您的命令将因此变为:

服务器

socat openssl-listen:5000,reuseaddr,cert=server.pem,cafile=server.crt,verify=0,openssl-min-proto-version=TLS1.3 STDIO

客户

socat stdio openssl-connect:localhost:5000,cert=server.pem,cafile=server.crt,verify=0,openssl-min-proto-version=TLS1.3

请注意,这并不强制使用 TLS v1.3 为此,请附加,openssl-max-proto-version=TLS1.3到选项列表(以便minmax都等于TLS1.3)。

[1] https://fossies.org/linux/socat/CHANGES

于 2022-02-22T15:01:37.393 回答