全部,
我正在编写一个程序,能够从本地网络内外的各个网站下载内容。为此,出于兼容性原因,我必须使用库和 c++。到目前为止,我已经能够成功访问网络上的普通 HTTP 页面和 HTTPS 页面。示例:
HRESULT res = URLDownloadToFile( NULL,
LPCTSTR(CString("https://www.google.com/")),
LPCTSTR(CString("websitecontent.txt")),
0,
NULL);
有两件事我无法做到: 1) 访问使用本地 CA 证书的本地网络资源。
2) 访问使用本地 CA 证书的本地网络资源,并通过客户端证书请求客户端身份验证。
在第一种情况下,我认为 Windows 不允许连接,因为它不在受信任 CA 的 Windows 列表中。
在第二个中,我认为我需要找到一种方法将客户端证书/私钥集成到对 URLDownloadToFile 的调用中,但我不知道如何实现这一点。此外,我还必须告诉 Windows 信任本地 CA。
如有任何帮助,我们将不胜感激。
我认为您需要检查证书链在 Internet Explorer 中是否受信任。
更好,使用 libcurl :)
只需在 URLDownloadToFile 之前调用
CoInternetSetFeatureEnabled(FEATURE_SSLUX, SET_FEATURE_ON_PROCESS, TRUE)