有没有办法指定 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 文档。您应该能够提供强制使用某些版本的密码列表。