首页 > 解决方案 > openssl 会话票证 - 仅使用 enc=1 调用 SSL_CTX_set_tlsext_ticket_key_cb 回调

问题描述

在服务器应用程序上,我正在尝试使用 openssl 1.1 制作 tls 会话票证。按照https://www.openssl.org/docs/man1.1.1/man3/SSL_CTX_set_tlsext_ticket_key_cb.html中的说明

在请求中,我可以看到回调在 ssl 握手过程中调用,参数为“enc=1”,正如第一次请求创建新会话所期望的那样,该函数按照上面链接中的 openssl 说明执行并返回值 1。

然而,在连续的请求中,回调仍然被调用“enc=1”,这表明客户端没有发送票证。所以会话恢复没有发生。

尝试同时使用 tls 1.2 / 1.3 服务器方法,但没有不同的行为。

在ssl ctx启动时,“SSL_CTX_set_tlsext_ticket_key_cb”旁边是否还有其他设置?关于如何调试的任何想法?

此外,由于在该示例中,根本没有使用“ssl”指针,所以我不清楚票据是如何/在哪里写入握手最终响应的。

谢谢

标签: csslopenssl

解决方案


关于如何调试的任何想法?

进行数据包捕获并检查票证是否从服务器发送到客户端。如果不是这种情况,则创建票证有问题。如果票证已发送给客户端,请检查客户端是否发回了相同的票证。如果不是,则客户端有问题,例如客户端不支持会话票证。

...因为在那个例子中,“ssl”指针根本没有被使用,所以我不清楚票据是如何/在哪里写入握手最终响应的。

新创建的票证是通过修改输入key_name和来返回的ctx。由于这些是指向缓冲区和结构的指针,因此修改将被反射回调用者。SSL 对象仅在需要根据当前 SSL 会话以某种方式决定要做什么时才需要,通常情况并非如此。


推荐阅读