我使用它使用OpenSSL的客户端侧TLS的应用程序。 我们从0.9.8e OpenSSL的版本升级到0.9.8k。 然后TLS不工作...

Wireshark的结果表明,新的版本(使用OpenSSL 0.9.8k)发送带有SessionTicket扩展客户端Hello报文 - 和以致命内部错误服务器侧响应

在先前版本发送一个几乎相同的问候分组,但没有SessionTicket分机

当我取代TLSv1_client_method与SSLv23_client_method,一切运行良好 - 的SENT客户端问候数据包是一个的SSLv2(在嗅探器)而没有任何扩展

(因为它不是TLS但SSL?)

是否有更好的方法来禁用此扩展或要解决的问题在另一种方式?

在预先感谢 rursw1

有帮助吗?

解决方案

从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,您需要注释掉的源代码的某些部分,否则将无法编译 - 作为安全重新协商(这被认为是其本身不安全的)要求它

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top