visual-studio - OpenSSL WinINET 客户端

标签 visual-studio winapi ssl openssl wininet

我有一个正在运行的客户端和一个服务器,一旦完成,它们将拥有有效的 SSL 证书。

目前,为了进行测试,我只是通过添加标志 INTERNET_FLAG_IGNORE_CERT_CN_INVALIDSECURITY_FLAG_IGNORE_UNKNOWN_CA 来禁用客户端中的 SSL 验证,如下所示:

HINTERNET hRequest = HttpOpenRequest(hConnection,
           "GET","index.html",
           NULL,NULL,NULL,
           INTERNET_FLAG_RELOAD|
           INTERNET_FLAG_EXISTING_CONNECT
           #ifdef  __HTTPS__
           | INTERNET_FLAG_SECURE |INTERNET_FLAG_IGNORE_CERT_CN_INVALID|SECURITY_FLAG_IGNORE_UNKNOWN_CA
           #endif
           ,
           dwContext);

我让它在我的笔记本电脑上完美运行。现在我正在尝试在我的电脑上使用它。完全相同的代码。复制并粘贴文件(均为 Visual Studio Professional 2008),现在我收到 12045 错误。这意味着证书颁发机构无效

我尝试禁用 Windows 防火墙,但没有成功。两台计算机连接到同一路由器

有什么想法会导致这种情况吗?

谢谢!

编辑 基本上发生的情况与描述的相同here by Microsoft ,仅本文适用于 Windows CE

最佳答案

this有帮助吗?

If a server SSL certificate is issued by unknown or invalid certificate authority WinInet HttpSendRequest API or MFC CInternetFile::SendRequest will fail with error 12045 (ERROR_INTERNET_INVALID_CA).

我认为您应该在发出请求之前调用 InternetSetOption(),如下所示,因为 HttpOpenRequest() flags不指定SECURITY_FLAG_IGNORE_UNKNOWN_CA:

HINTERNET hRequest = HttpOpenRequest(hConnection,...

#ifdef  __HTTPS__
    DWORD dwFlags;
    DWORD dwBuffLen = sizeof(dwFlags);
    InternetQueryOption(hRequest, INTERNET_OPTION_SECURITY_FLAGS, (LPVOID)&dwFlags, &dwBuffLen);

    dwFlags |= SECURITY_FLAG_IGNORE_UNKNOWN_CA;

    InternetSetOption (hRequest, INTERNET_OPTION_SECURITY_FLAGS, &dwFlags, sizeof (dwFlags));
#endif

HttpSendRequest(hRequest,...

关于visual-studio - OpenSSL WinINET 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14071099/

相关文章:

visual-studio - 如何在 visual studio web 性能测试项目中参数化 url 路径?

node.js - 如何使用 "Blank Node.js"模板在 Visual Studio 2019 中调试 React 应用程序

winapi - MFC:使用 CString 加载字符串

azure - azure 中的证书( *.p12 , *.cert )- webjob

java - 启用S​​SL时如何更正IBM MQ错误

c# - SQL Server错误: The database cannot be opened because it is version 904.如何处理此服务器支持852及更早版本

c++ - Visual Studio C++ 2008/2010 - 浮点 NaN 中断

C++ Win32 (WinAPI) 带有最大化按钮的自定义窗口框架

c# - 如何正确对齐 SHELLSTATE 结构的字段?

ssl - Fiddler - 从 Web 应用程序捕获 HTTPS 流量