SSPI 通道 API - 是否可以重复使用凭据句柄



我目前正在为libcurl添加SSPI Schannel API支持,以便在没有任何外部依赖的情况下在Windows上使用启用SSL的协议,例如OpenSSL。

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

通过

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

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

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

提前感谢!

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

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

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

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

最新更新