使用 curl 时指定次要 TLS 版本

使用 curl 时指定次要 TLS 版本

有没有办法指定 curl 使用特定的 TLS 版本?比如 1.1 或 1.2?我在命令帮助中只能看到 sslv3 和 tlsv1 选项。我获取了最新的 src 并使用 openssl 1.0.1e 对其进行了编译。在帮助中仍然没有看到直接选项。还有其他方法可以设置它吗?

答案1

Curl 有选项可以控制所使用的 TLS 版本。在本答案的最后修订日期,如果您想指定使用 TLS 1.2,但不使用 1.1 或 1.3 等,您需要类似

curl --tlsv1.2 --tls-max 1.2 ...

答案最后检查于 2024-03-13,仍然适用于 curl 版本 8.6.0


自从最初的问题被提出以来,Curl 已经发生了一些相关的变化。

版本 7.54.0

自 7.54.0 版本以来,行为已经发生改变,请参阅nelsonda 的回答

像现在这样的选项--tlsv1.2指定最低限度要使用的版本,它们不再指定精确的要使用的版本。

要指定要使用的确切版本,您可能还必须指定一个值--tls-max

curl --tlsv1.2 --tls-max 1.2 ...

版本 7.52.0

--tlsv1.3除了下面列出的其他选项外,还推出了版本 7.52.0 。


版本 7.34.0

自 7.34.0 版本以来,Curl 具有选项--tlsv1.0--tlsv1.1--tlsv1.2用于此目的。

手册页

-1,--tlsv1

(SSL)强制 curl 在与远程 TLS 服务器协商时使用 TLS 版本 1.x。您可以使用选项 --tlsv1.0、--tlsv1.1 和 --tlsv1.2 来更精确地控制 TLS 版本(如果使用的 SSL 后端支持这种级别的控制)。

...

--tlsv1.2

(SSL)与远程 TLS 服务器协商时强制 curl 使用 TLS 版本 1.2。(在 7.34.0 中添加)


答案2

Curl 的行为已经改变!

对于 7.54.0 之前的版本,RedGrittyBrick 的回答仍然正确。对于 7.54.0 之后的 curl 版本,选项--tlsv1.0--tlsv1.1--tlsv1.2设置最低限度curl 将使用的 TLS 版本。指定最大使用量--tls-max <VERSION>

来自手册页

--tls-max <VERSION>

(SSL) VERSION 定义支持的最大 TLS 版本。可接受的最低版本由 tlsv1.0、tlsv1.1、tlsv1.2 或 tlsv1.3 设置。

答案3

--tlsvX.Y/之外--sslvZ,它对 curl 选择的协议进行了硬性限制,您还可以使用--tls-max x.y它来软控制协议协商。

答案4

看一下--cipher选项参见手册页OpenSSL 文档。您应该能够提供强制使用某些版本的密码列表。

相关内容