Reworked TLS 1.3 change; add WS2019 test coverage (#5051)

* Reworked TLS 1.3 change; add WS2019 test coverage

* Enable static MSVC lib support on WS2019

* Fall back to TLS 1.2 if TLS 1.3 doesn't work
This commit is contained in:
Larry Osterman 2023-10-24 15:55:40 -07:00 committed by GitHub
parent 5174503dc3
commit 490250646f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 8 deletions

View File

@ -29,7 +29,7 @@
}
},
{
"StaticConfigs": {
"StaticConfigs": {
"Win2019_x64_Release": {
"OSVmImage": "windows-2019",
"Pool": "azsdk-pool-mms-win-2019-general",
@ -38,12 +38,12 @@
"VCPKG_DEFAULT_TRIPLET": "x64-windows-static",
"BuildArgs": "--parallel 8 --config Release"
}
},
},
"BuildSettings": {
"Curl": {
"CmakeArgs": " -DBUILD_TRANSPORT_CURL=ON"
"CmakeArgs": " -DBUILD_TRANSPORT_CURL=ON -DBUILD_TESTING=ON -DMSVC_USE_STATIC_CRT=ON "
},
"WinHttp": { }
"WinHttp": { "CmakeArgs": " -DBUILD_TESTING=ON -DMSVC_USE_STATIC_CRT=ON " }
}
},
{

View File

@ -724,15 +724,24 @@ Azure::Core::_internal::UniqueHandle<HINTERNET> WinHttpTransport::CreateSessionH
#endif
// Enforce TLS version 1.2 or 1.3 (if available).
#if defined(WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_3)
auto tlsOption = WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_2 | WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_3;
#else
auto tlsOption = WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_2;
#if defined(WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_3)
tlsOption |= WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_3;
#endif
if (!WinHttpSetOption(
sessionHandle.get(), WINHTTP_OPTION_SECURE_PROTOCOLS, &tlsOption, sizeof(tlsOption)))
{
GetErrorAndThrow("Error while enforcing TLS version for connection request.");
#if defined(WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_3)
// If TLS 1.3 is not available, try to set TLS 1.2 only.
tlsOption = WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_2;
if (!WinHttpSetOption(
sessionHandle.get(), WINHTTP_OPTION_SECURE_PROTOCOLS, &tlsOption, sizeof(tlsOption)))
{
#endif
GetErrorAndThrow("Error while enforcing TLS version for connection request.");
#if defined(WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_3)
}
#endif
}
return sessionHandle;