2010-04-19 140 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中,您需要注释掉部分源代码或不会编译 - 作为安全重新协商(本身被认为是不安全的)需要它。