c - 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”指针,所以我不清楚票据是如何/在哪里写入握手最终响应的。
谢谢
解决方案
关于如何调试的任何想法?
进行数据包捕获并检查票证是否从服务器发送到客户端。如果不是这种情况,则创建票证有问题。如果票证已发送给客户端,请检查客户端是否发回了相同的票证。如果不是,则客户端有问题,例如客户端不支持会话票证。
...因为在那个例子中,“ssl”指针根本没有被使用,所以我不清楚票据是如何/在哪里写入握手最终响应的。
新创建的票证是通过修改输入key_name
和来返回的ctx
。由于这些是指向缓冲区和结构的指针,因此修改将被反射回调用者。SSL 对象仅在需要根据当前 SSL 会话以某种方式决定要做什么时才需要,通常情况并非如此。
推荐阅读
- jquery - 试图在 jquery 中将 db 结果捕获为 json
- url-rewriting - 如何将 tucky URL 重写与 Angular 和 Tomcat 7 集成
- javascript - 为什么惰性 getter 使用原型而不使用类?
- php - 在运输方式中添加描述字段 - Woocommerce 管理员
- angular - 为什么 ng2-smart-table 在 Internet Explorer 11 中不起作用?
- amazon-web-services - 如何在中国区域的 AWS beanstalk 实例上部署美国区域的 AWS beanstalk 实例
- php - ajax替换后的PHP空字段
- angular - 整个表上的 Angular4 搜索过滤器功能
- r - 在避免循环的同时更改/强制 tibble 的多个列
- excel - 检索计算机的充电状态和当前电池电量