0

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?

Zhen
  • 4,171
  • 5
  • 38
  • 57

0 Answers0