我有一个正在运行的客户端和一个服务器,一旦完成,它们将拥有有效的 SSL 证书。
目前,为了进行测试,我只是通过添加标志 INTERNET_FLAG_IGNORE_CERT_CN_INVALID
和 SECURITY_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/