最近披露了Tripple Handshake Issue。更糟糕的禁用会话恢复将缓解此问题,是another question的主题。让我们假设我想因任何原因(基本上是我的偏执狂)禁用它。
要在C中禁用此功能,似乎应该使用此功能:
SSL_CTX_set_session_cache_mode(ctx, SSL_SESS_CACHE_OFF);
有人可以确认吗?
但是如何在pyopenssl中做到这一点?
答案 0 :(得分:3)
从pyOpenSSL 0.14开始,这是可能的:
from OpenSSL.SSL import TLSv1_2_METHOD SESS_CACHE_OFF, Context, Connection
ctx = Context(TLSv1_2_METHOD)
ctx.set_session_cache_mode(SESS_CACHE_OFF)
conn = Connection(ctx, ...)
早期版本的pyOpenSSL不会公开这些API。
如果您还需要关闭会话票,那么:
from OpenSSL.SSL import OP_NO_TICKET
...
ctx.set_options(OP_NO_TICKET)
答案 1 :(得分:0)
有人可以确认吗?
我相信Henson博士在OpenSSL User Mailing list回答了这个问题。
https://secure-resumption.com/中描述的攻击也会打破 通道绑定tls-unique RFC 5929。
我仍然希望使用tls-unique来定义通道绑定 SCRAM(RFC 5802)。 OpenSSL可以用于通道绑定和保护 如果禁用会话缓存,则针对此攻击?
SSL_CTX_set_session_cache_mode(ctx,SSL_SESS_CACHE_OFF)
是否有必要使用其他功能禁用恢复?
您还需要禁用会话票证。
请注意,攻击的初始阶段需要攻击者 拥有客户信任的私钥和证书。我会的 有兴趣知道在你的情况下会发生什么。
因此,根据Henson博士的说法,您还需要使用SSL_CTX_set_options
致电SSL_OP_NO_TICKET
。请参阅
SSL_CTX_set_options(3)上的OpenSSL文档。