- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 C++ 应用程序,它与我们的一台服务器建立 HTTPS 连接。在我的理想世界中,我希望发生以下情况:
我确实不希望此根CA一定受到其他应用程序的信任。因此我不想在系统范围内安装证书。如果用户不需要管理员权限,我也希望它。
我最初的计划是创建一个内存中 (CERT_STORE_PROV_MEMORY) 存储,将我的证书添加到其中,然后使用 CertAddStoreToCollection 将该内存中存储添加到系统存储中。
虽然所有 CryptoAPI 函数调用都成功,但 WinHttp 不喜欢它。
这是我正在做的事情的骨架 - 也许有人知道一个技巧?或者也许这从一开始就是错误的?
hMemStore = CertOpenStore(CERT_STORE_PROV_MEMORY, ...);
pCert = CertCreateCertificateContext(..., pCertBytes, ...);
CertAddCertificateContextToStore(hMemStore, pCert, ...);
hRootStore = CertOpenSystemStore(NULL, "ROOT");
CertAddStoreToCollection(hRootStore, hMemStore, ...);
// Then later on...
WinHttpSendRequest(...)
一些注意事项:
谢谢!
最佳答案
由于您不希望其他应用程序信任此证书,因此您需要自己完成部分证书验证。使用选项 SECURITY_FLAG_IGNORE_UNKNOWN_CA 禁用 CA 检查,然后获取连接到服务器 WINHTTP_CALLBACK_STATUS_CONNECTING_TO_SERVER 的回调。在该回调中,使用 WINHTTP_OPTION_SERVER_CERT_CONTEXT 获取证书并进行验证。如果不是您想要的人,请取消/关闭请求;如果正确,请继续请求。
关于c - WinHttp:如何使用临时证书存储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1557710/
This page on msdn包含可能在 WinHTTP 中使用的 HTTP 状态代码的定义。有没有办法从 WinHttp 中发出的请求中检索 HTTP 状态代码? 我发现获取响应文本的唯一方法是
我有一个 C++ 应用程序,它与我们的一台服务器建立 HTTPS 连接。在我的理想世界中,我希望发生以下情况: 应用启动 应用程序使 Windows 信任服务器的根 CA(无需 GUI,只需系统调用)
我目前正在尝试编写一个类来让我更轻松地发送简单的请求。 最后我希望它可以像这样使用: int _tmain(int argc, _TCHAR* argv[]) { HttpRequest Re
我在 Visual C++ 2015 中使用 Casablanka Rest SDK。Casablanka SDK 基于 winhttp。每当通过 SSL 发送请求时,都会收到异常。异常(except
我的 C++ 不是很好,如果您在代码片段中看到可以更好的地方,请教我! 我正在以异步方式实现 winhttp。但我无法检索响应。我想不通。因为您应该能够一次解析整个响应。由于可能会发生多个并发请求,因
我最近将一个完全可用的 WinInet 程序移植到 WinHTTP。这是我编写的一个函数,用于将整个 GET 请求包装到一行代码中: bool Get(Url url, std::vector& da
我需要从网站的大约 6000 页中提取数据。在做了一些研究之后,我决定试一试 WinHTTP。我能够让它工作,但是我正在同步做事,所以需要一段时间才能完成。我现在正尝试异步使用 WinHTTP,但遇到
我正在尝试使用 vba WinHttp.WinHttpRequest 向 kigo 的 api 发出请求, 我能够发送请求,但 WinHttpRequest 更改了内容类型添加 Charset=UTF
我在 Access 2007 VBA 中使用 WinHTTP 来获取一些需要 cookie 登录凭据帐户的项目列表。 首先我通过https://www.example.com/login.php登录有
编辑:线程:https://security.stackexchange.com/questions/179352/winhttp-prevent-successful-handshake-if-pe
我正在创建一个 Delphi 应用程序来从 Internet 下载文件,如果服务器支持范围请求,它将是多线程的。进度也会转发回 GUI。 当前的软件模型使用TThread组件。 GUI 调用 TDow
请告知Delphi XE中是否有WinHTTP包装器 按优先顺序排列: 开箱即用的 Delphi 单元 带有移植入口例程的第三方开源 pas 文件 xxx_TLB.pas 包装器 解决方案: 由于注释
我正在尝试从网页下载数据然后解析它,问题是我无法获取 pszoutbuffer 的值(ZeroMemory 函数将其删除)我采取了来自 MSDN 示例的代码 void http_connect::r
我正在尝试在 C++ 中使用 WinHTTP 执行 HTTP GET,但在解析名称后(在状态回调函数中获取 WINHTTP_CALLBACK_STATUS_NAME_RESOLVED 之后)它在某个时
我正在尝试使用 WinHTTP 连接到服务器,不幸的是,当我尝试将协议(protocol)从 http 升级到 webscoket 时,API WinHttpSetOption 失败。 hSessio
我正在开发一个客户端-服务器应用程序,其中服务器是一个基于 SSL 证书执行客户端验证的 Web 服务器。服务器信任根 CA 证书。 Client 是一个用 C++ 开发的 Windows 应用程序,
在花了几天的时间把我的头撞到墙上后,我想我应该在这里问一下。 下面代码的问题是我基本上是在迭代一个目录,将文件上传到那里。所有文件都很小,大小约为 1KB,因此这不是大小问题。第一次上传顺利通过,所有
在向服务器发帖之前我需要添加任何标题吗? 例如,目前我正在尝试以这种方式发送请求以及发布数据, LPCWSTR post = L"name=User&subject=Hi&message=Hi";
根据 MSDN , WinHttpSetCredentials 要求您指定确切的用户名和密码。 有没有办法使用当前用户凭据? 无需指定用户名和密码,即。 当我发送请求时,我收到一个 401 响应。 (
WinHttp.dll 是标准的 Windows 文件吗?我的应用程序依赖于它,但我宁愿不在我的应用程序设置中部署它,除非它是必要的。 最佳答案 根据:http://msdn.microsoft.co
我是一名优秀的程序员,十分优秀!