wget TLSv1은 TLSv1_2와 동일하게 작동합니다.

wget TLSv1은 TLSv1_2와 동일하게 작동합니다.

curl --tlsv1.0비교 를 위해 Wireshark를 사용했습니다.--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_2 대신 1_0을 따르도록 하려면 어떻게 해야 합니까?

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;
}

관련 정보