2010-04-19 55 views
1

我正在使用OpenSSL用於客戶端TLS端的應用程序。 我們將OpenSSL版本從0.9.8e升級到0.9.8k。 然後TLS不起作用...OpenSSL:SessionTicket TLS擴展問題

Wireshark顯示新版本(使用OpenSSL 0.9.8k)將客戶端hello數據包發送給SessionTicket擴展 - 服務器端響應一個致命的內部錯誤。

上一個版本發送一個幾乎相同的hello數據包,但沒有SessionTicket分機。

當我更換TLSv1_client_method與SSLv23_client_method,一切運行良好 - 在客戶端發送hello報文是一個的SSLv2(在嗅探器),沒有任何擴展名(?因爲它不是TLS,但是SSL)

是否有更好的方法來禁用此擴展或以另一種方式解決問題?

由於提前, rursw1

回答

5

從RFC 5077引用: 「注意,空SessionTicket擴展的編碼是 曖昧在RFC 4507的RFC 4507實現可能已經編碼 它爲:

00 23  Extension type 35 
    00 02  Length of extension contents 
    00 00  Length of ticket 

,或者它已編碼的方式,因爲這更新相同:

00 23  Extension type 35 
    00 00  Length of extension contents 

希望支持RFC 4507客戶端的服務器應以響應 空SessionTicket擴展的方式進行編碼。 「 所以我支持RFC 4507,而不是新的5077.

工作使用的SSL_CTX_set_options與SSL_OP_NO_TICKET刪除它‘正常’的服務器解決了這個問題。

希望這會幫助別人......

編輯: 好了,這也可以用-no-tlsext配置標誌位來完成。 (運行perl配置腳本時)。 但是,請注意,在OpenSSL 0.9.8n和OpenSSL 1.0.0中,您需要註釋掉部分源代碼或不會編譯 - 作爲安全重新協商(本身被認爲是不安全的)需要它。