0

我正在使用 Wininet 库与客户端证书(存储在智能卡上)建立 SSL 连接。

问题是我看到每个已发送的 HttpRequest 都访问了智能卡。

从 Fidler 和 wireshark,我看到: 1. 所有请求都是 HTTP 1.0 而不是 HTTP 1.1。2. 每次连接都会进行完整的 SSL 握手 3. 我不会被要求为每个请求输入 pin 码(仅适用于第一个请求),但我发送的每个请求都会访问智能卡。

有什么想法/线索吗?实际上,问题可能与wininet无关,但证书存储应该采取额外的步骤?

谢谢你,扎哈尔

4

1 回答 1

0

好的,我仍然不明白为什么 wininet ssl 连接是 HTTP 1.0 而不是 HTTP 1.1(根据 MSDN 应该是 HTTP 1.1。),在 wininet.h 中明确 HTTP 版本是 1.0。

关于完整握手:我不能使用INTERNET_FLAG_IGNORE_CERT_CN_INVALIDINTERNET_FLAG_IGNORE_CERT_DATE_INVALID或相关证书忽略标志来忽略任何证书错误或证书验证检查。IE wininet 代码强制检查,看看您是否没有使用常规 IE 例程来处理安全性。如果安全检查被忽略或禁用,wininet 将为每个单独的请求强制执行一个新的 SSL 套接字。这意味着当安全检查被禁用时,请求不会一起共享。这是一种安全设计,用于确认您确实希望忽略/禁用每个请求的证书检查,而不是在多个请求之间共享未经验证的 SSL 会话。

问候,扎哈尔

于 2013-01-01T07:44:56.663 回答