2012-04-10 62 views
0

我目前在libcurl中添加了SSPI Schannel API支持,以便可以在沒有任何外部依賴項(如OpenSSL)的情況下在Windows上使用啓用SSL的協議。SSPI Schannel API - 可以重新使用憑證句柄嗎?

我已經有一個可行的SSL/TLS實現,但是我有一個關於函數AcquireCredentialsHandle返回的證書句柄的重用的非常具體的問題。

通過重新使用SSL/TLS會話而不是創建新的句柄,重新使用現有的句柄並將其多次傳遞給InitializeSecurityContext是否正確並且可能?

我在用於libcurl的Schannel模塊上的工作可以找到here,試圖重新使用的實驗版本可以找到here

我將不勝感激這方面的任何提示或反饋。那麼,憑證處理可以以這種方式重新使用嗎?這是正確的嗎?

在此先感謝!

回答

2

我找到了答案,我的問題,在這裏記錄下來給別人:

  1. 它之前被問和第一個答案可以發現here
  2. 以下信息可在this MSDN page發現:

您的應用程序通過調用AcquireCredentialsHandle函數返回的句柄要求的憑證獲取憑證。因爲憑證句柄用於存儲配置信息,所以同一句柄不能用於客戶端和服務器端操作。這意味着支持客戶端和服務器連接的應用程序必須至少獲得兩個憑證句柄。

因此,可以假定安全地重複使用相同的憑證句柄進行多個連接。我證實它確實使Schannel重新使用了SSL/TLS會話。這已經在Windows 7 Professional SP1上測試過。