I am trying to connect with a client using SSL, with a code similar to (simplified):
session = WinHttpOpen(L"test", WINHTTP_ACCESS_TYPE_DEFAULT_PROXY, WINHTTP_NO_PROXY_NAME, WINHTTP_NO_PROXY_BYPASS, 0);
DWORD secure_protocols = WINHTTP_FLAG_SECURE_PROTOCOL_ALL;
if (!WinHttpSetOption(m_session, WINHTTP_OPTION_SECURE_PROTOCOLS, &secure_protocols, sizeof(secure_protocols)))
{
MY_ERROR("Failed on WinHttpSetOption WINHTTP_OPTION_SECURE_PROTOCOLS ");
}
request = WinHttpOpenRequest(session, method, uri, NULL, WINHTTP_NO_REFERER, WINHTTP_DEFAULT_ACCEPT_TYPES, WINHTTP_FLAG_SECURE);
if (!WinHttpSendRequest(request, headers, headersSize, NULL, 0, 0, DWORD_PTR(0)))
{
const auto result = GetLastError();
if (result == ERROR_WINHTTP_SECURE_FAILURE)
{
DWORD dwFlags = SECURITY_FLAG_IGNORE_UNKNOWN_CA
| SECURITY_FLAG_IGNORE_CERT_WRONG_USAGE
| SECURITY_FLAG_IGNORE_CERT_CN_INVALID
| SECURITY_FLAG_IGNORE_CERT_DATE_INVALID;
if (WinHttpSetOption(hRequest, WINHTTP_OPTION_SECURITY_FLAGS, &dwFlags, sizeof(dwFlags)))
/* RETRY */
}
}
I was expecting a ERROR_WINHTTP_SECURE_FAILURE
in the first call to ẀinHttpSendRequest` (after that error I think I should configure SSL options, ... etc)
But I having a 12029 ERROR_WINHTTP_CANNOT_CONNECT
instead, and I'm confuse here.
The server works fine, using Firefox I am able to GET uris without problems, but on my client I don´t know how to connect.
How can I solve the issue?