【发布时间】:2020-07-30 10:01:47
【问题描述】:
以下代码用于下载文件,但如果服务器有自签名证书则不起作用:
DWORD errCode = 0;
HINTERNET intOpenHandle = InternetOpen("Snippet", LOCAL_INTERNET_ACCESS, NULL, 0, 0);
errCode = GetLastError();
if (intOpenHandle != NULL && errCode == ERROR_SUCCESS)
{
HINTERNET urlOpenHandle = InternetOpenUrl(intOpenHandle, url, NULL, NULL, NULL, NULL);
errCode = GetLastError();
if (urlOpenHandle != NULL && errCode == ERROR_SUCCESS)
{
...
有没有办法修改它以使用自签名证书?
【问题讨论】:
-
你得到的错误代码是什么?否则尝试使用自定义 INTERNET_OPTION_SECURITY_FLAGS docs.microsoft.com/en-us/windows/win32/wininet/option-flags 调用 InternetSetOption(如 SECURITY_FLAG_IGNORE_***)
-
ERROR_INTERNET_INVALID_CA(12045),并尝试使用SECURITY_FLAG_IGNORE_UNKNOWN_CA,但仍然是同样的错误... -
你是在 InternetOpenUrl 之前调用它吗?尝试其他 SECURITY_FLAG_IGNORE_ 标志也可以看到:stackoverflow.com/questions/41357008/…
-
在
InternetOpen()和InternetOpenUrl()调用之间是的,因为后者给出了错误 12045。我会尝试其他SECURITY_FLAG_IGNORE_*标志... -
试过
SECURITY_FLAG_IGNORE_UNKNOWN_CA和SECURITY_FLAG_IGNORE_WEAK_SIGNATURE,但无济于事...