我有一些邏輯與具有兩個版本,NSURLConnection和NSURLSession的後端服務器進行通信。後者是因爲NSURLConnection已被棄用,我們還想利用後臺下載功能。編寫這些類是爲了支持客戶端證書來驗證客戶端。NSURLSession和NSURLConnection的使用,因爲它涉及到共享一個SSL會話
執行此通信的類在我的應用程序中通過幾種不同類型的例程調用。
我看到的問題是,當使用NSURLSession版本時,我發現SSL(TLSv1)會話永遠不會被重用,並且有一個完整的[Client Hello,Server Hello,Certificate,Certificate,Client密鑰交換,證書驗證等]。看看「客戶端Hello」消息,我可以看到消息中永遠沒有「會話ID」,所以我認爲這就是SSL會話永遠不會被重用的原因。
在舊的NSURLConnection版本上,我發現經常會話被重用,並在「Client Hello」消息中給出了以前的會話ID。
在這兩種方法中,我都創建了NSURLConnection或NSURLSession的新實例。我認爲發生的事情是NSURLConnection適用於整個應用程序,而NSURLSession則不適用。
但是,我不知道我應該如何編寫NSURLSession邏輯,以便SSL會話在服務器和客戶端之間共享,並且客戶端證書不會每次都發送。我認爲一種方法可能是使用單個NSURLSession實例,但我不確定這是否是正確的設計模式。