2015-01-06 47 views
0

我正在研究M2M應用程序,其中數據量受到嚴格限制,移動客戶端必須經常在TLS連接上進行設置。有沒有標準的方法或最佳實踐 - 客戶端緩存服務器證書鏈,以便服務器不需要在每個連接設置上發送整個鏈? 我可以想象一個服務器不會沿着(可選的)證書鏈發送。客戶端像往常一樣繼續,如果它在本地緩存中持有鏈。但是,一旦服務器證書過期,客戶端必須以某種方式告訴服務器它必須沿着新鏈發送。可能按需接收TLS服務器證書鏈?

是否有可能以上述方式在apache或ngix中配置流行的TLS實現?

非常感謝您的幫助! Uli

+1

Apache和nginx都支持TLS會話恢復(http://en.wikipedia.org/wiki/Transport_Layer_Security#Resumed_TLS_handshake),以避免完整握手的開銷,您是否可以在客戶端使用它? – Iridium

+0

是的,我們正在研究會議恢復。但是,我們正在討論每天多次與服務器連接的設備,並且我想阻止設備交換證書鏈大約一週。因此,在使用會話恢復時,服務器需要在一週時間內爲潛在的數千個設備存儲會話狀態。我懷疑Apache或Nginx能夠處理這個問題,但我沒有第一手的經驗。 –

回答

2

客戶端無法按需從服務器請求鏈。有一種方法可以在證書中獲取URL,以獲取頒發者證書,但客戶端必須提取此URL並按需下載證書。某些桌面瀏覽器會這樣做,但大多數其他SSL堆棧卻不這樣做。

但是,如果客戶端和服務器支持會話重用,則服務器僅在會話中發送第一個連接的證書和鏈,但不會在恢復會話時發送。

+0

感謝您的回覆!事實上,似乎很難告訴服務器何時發送證書。我希望由於丟失證書而導致的首次連接嘗試失敗會觸發服務器在第二次連接嘗試中沿證書鏈發送數據。畢竟,存在一個TLS錯誤消息,指出缺少證書。 –

+0

沒有指示丟失證書的TLS錯誤消息。只有「未知的ca」警報,但有些客戶端關閉(握手失敗)。另外,它要求服務器可以以某種方式檢測到同一客戶端再次連接以發送重試的完整鏈。 –

相關問題