wget TLSv1 的行为与 TLSv1_2 相同

wget TLSv1 的行为与 TLSv1_2 相同

我用wireshark来curl --tlsv1.0比较--tlsv1.2

对于支持它的服务器,服务器握手会乖乖地使用 TLSv1.0(重点是检查以验证它们不支持):

wget url --no-check-certificate --secure-protocol=TLSv1 behaves the same as --secure-protocol=TLSv1_2: the handshake uses TLS1_2 every time.

显然没有--secure-protocol=TLS1_0。如何强制 wget 使用 1_0 而不是 1_2 服从?

wget: --secure-protocol: Invalid value ‘TLSv1_0’

GNU Wget 1.17.1 构建于 cygwin。

答案1

阅读源代码,您可以看到可能性。 这片看起来像你想要的:

case secure_protocol_tlsv1:
  err = gnutls_priority_set_direct (session, "NORMAL:-VERS-SSL3.0", NULL);
  break;

case secure_protocol_tlsv1_1:
  err = gnutls_priority_set_direct (session, "NORMAL:-VERS-SSL3.0:-VERS-TLS1.0", NULL);
  break;

其中(参见初始化程序) 似乎"tlsv1_1"

static bool
cmd_spec_secure_protocol (const char *com, const char *val, void *place)
{
  static const struct decode_item choices[] = {
    { "auto", secure_protocol_auto },
    { "sslv2", secure_protocol_sslv2 },
    { "sslv3", secure_protocol_sslv3 },
    { "tlsv1", secure_protocol_tlsv1 },
    { "tlsv1_1", secure_protocol_tlsv1_1 },
    { "tlsv1_2", secure_protocol_tlsv1_2 },
    { "pfs", secure_protocol_pfs },
  };
  int ok = decode_string (val, choices, countof (choices), place);
  if (!ok)
    fprintf (stderr, _("%s: %s: Invalid value %s.\n"), exec_name, com, quote (val));
  return ok;
}

相关内容