gpt4 book ai didi

python - 如何确保轮换 TLS session 票证?

转载 作者:太空宇宙 更新时间:2023-11-03 13:21:55 24 4
gpt4 key购买 nike

我已经使用 Python's SSL module 在客户端和服务器之间建立了一个简单的 TLS 1.2 session (在引擎盖下运行 LibreSSL 2.2.7)并且想知道 session 票证是否会自动轮换。

看起来服务器正在向客户端提示 session 票证只能在 300 秒内有效(Session Ticket Lifetime Hint: 300 seconds)

enter image description here

但是已经快一个小时了,并没有像我预期的那样发出新的 session 票。同时我在双方之间交换了一些应用程序数据,但似乎没有触发任何东西。

根据 RFC 4507我了解 300 秒提示并非必须严格遵守

The ticket_lifetime_hint field contains a hint from the serverabout how long the ticket should be stored. The value indicatesthe lifetime in seconds as a 32-bit unsigned integer in networkbyte order. A value of zero is reserved to indicate that thelifetime of the ticket is unspecified. A client SHOULD delete theticket and associated state when the time expires. It MAY deletethe ticket earlier based on local policy. A server MAY treat aticket as valid for a shorter or longer period of time than what isstated in the ticket_lifetime_hint.

但是我怎么知道票据轮换是否正在发生?如何查看我的客户在轮换票证之前等待了多长时间?

最佳答案

session 票证是服务器在握手时给出的。要启动握手,您必须从带有空票证的新连接开始(例如,通过使用 HTTP keep alives),或者在已建立的连接中强制重新握手。不幸的是,保持连接打开很长时间并等待看到任何事情发生,比如票据更新不太可能发生。

如果你想用新连接重新启动,要么对你的客户端进行编程以不时关闭和重新打开新连接,要么在服务器端尝试 HTTP Keep-Alive header ,它应该通知客户端它应该如何表现。不幸的是,我们不确定此 header 行为,因为我们知道此 header 存在于 RFC 2068 中。 , 但其用法在 RFC draft 中有所描述现在已经过期了。使用示例:

Keep-Alive: timeout=300

如果您有权访问低级 API,则可以进行 SSL 重新握手。然后服务器可以发送 HelloRequest强制客户端开始重新握手,此时如果之前的票被认为已过期,它应该要求一张新票。

在这两种情况下,您都应该通过网络捕获来确认它的行为是否符合预期。如果您不使用低级语言进行编码,则可能无法看到任何内容(例如 Java 允许对重新握手进行编码,但我不确定对整个服务器进行编码是否值得)。

关于python - 如何确保轮换 TLS session 票证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48451291/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com