代码之家  ›  专栏  ›  技术社区  ›  rkellerm

openssl:sessionticket tls扩展问题

  •  1
  • rkellerm  · 技术社区  · 15 年前

    我使用的是一个应用程序,它使用OpenSSL作为客户端TLS端。 我们将openssl版本从0.9.8e升级到0.9.8k。 然后TLS就不起作用了…

    wireshark显示,新版本(带有openssl 0.9.8k)使用sessionticket扩展名发送客户机hello数据包,服务器端以致命的内部错误响应。

    以前的版本发送几乎相同的hello包,但没有sessionticket ext。

    当我用sslv23_client_方法替换tlsv1_client_方法时,一切都正常工作-发送的客户机hello包是sslv2包(在嗅探器中),没有任何扩展(因为它不是tls,而是ssl?)

    是否有更好的方法来禁用此扩展或以其他方式解决问题?

    事先谢谢, RurSW1

    1 回复  |  直到 9 年前
        1
  •  5
  •   rkellerm    9 年前

    引自RFC 5077: _156;注意空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
    

    希望支持RFC4507客户机的服务器应响应 空的sessionticket扩展名的编码方式与接收它的方式相同。 艾斯 所以我使用的服务器支持RFC4507,而不是更新的5077。

    使用ssl_ctx_set_options和ssl_op_no_票据“正常”删除它解决了问题。

    希望这能帮助别人…

    编辑: 好吧,这也可以通过配置标志来实现——没有tlsext。(运行perl配置脚本时)。 但是,请注意,在openssl 0.9.8n和openssl 1.0.0中,您需要注释掉源代码的某些部分,否则它将无法编译,因为安全重新协商(它本身被认为是不安全的)需要这样做。