0

我目前正在向 libcurl 添加 SSPI Schannel API 支持,以便可以在 Windows 上使用启用 SSL 的协议,而无需任何外部依赖,例如 OpenSSL。

我已经有一个有效的 SSL/TLS 实现,但我有一个非常具体的问题,即重用由函数AcquireCredentialsHandle返回的凭据句柄。

通过创建新句柄、重新使用现有句柄并将其多次传递给InitializeSecurityContext来重复使用 SSL/TLS 会话是否正确且可能?

我在 libcurl 的 Schannel 模块上的工作可以在这里找到,尝试重用的实验版本可以在这里找到。

我将不胜感激有关此问题的任何提示或反馈。那么,凭证句柄可以以这种方式重复使用吗?它是正确的吗?

提前致谢!

4

1 回答 1

3

我找到了我的问题的答案并在这里记录下来供其他人使用:

  1. 以前有人问过,第一个答案可以在这里找到。
  2. 可以在此 MSDN 页面上找到以下信息:

您的应用程序通过调用AcquireCredentialsHandle函数获取凭据,该函数返回请求凭据的句柄。因为凭据句柄用于存储配置信息,所以不能将同一句柄用于客户端和服务器端操作。这意味着同时支持客户端和服务器连接的应用程序必须至少获得两个凭据句柄。

因此,可以假设为多个连接重复使用相同的凭据句柄是安全的。而且我证实它确实使 Schannel 重新使用 SSL/TLS 会话。这已在 Windows 7 Professional SP1 上进行了测试。

于 2012-04-10T15:13:06.960 回答