![wget TLSv1은 TLSv1_2와 동일하게 작동합니다.](https://linux55.com/image/85723/wget%20TLSv1%EC%9D%80%20TLSv1_2%EC%99%80%20%EB%8F%99%EC%9D%BC%ED%95%98%EA%B2%8C%20%EC%9E%91%EB%8F%99%ED%95%A9%EB%8B%88%EB%8B%A4..png)
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;
}