节点TLS票证重新建立连接

时间:2015-06-29 13:04:17

标签: node.js session ssl

我正在尝试使用nodejs。我正在尝试使用TLS Ticket来恢复TLS会话。所以我会在成功连接后让客户端保存TLS Ticket。关闭后,我希望它使用相同的TLS票证来重新建立TLS连接。

我找到了node tls命令tlsSocket.getTLSTicket()但是我不知道如何使用它来重新建立连接,因为它“仅用于调试”。

我想要的是能够从客户端获取TLSTicket并根据nodejs中服务器中的TLSTicketKey手动验证它。

由于

1 个答案:

答案 0 :(得分:1)

花了比我应有的更多的时间,这些是我发现的:

  1. 似乎没有任何API或公开的JavaScript函数可以让您验证TLSTickets。
  2.   

    通过会话票证重用会话是开箱即用的,对于你的node.js实现完全透明

    https://strongloop.com/strongblog/improve-the-performance-of-the-node-js-https-server/

    但是,正如您将在链接中看到的那样,可以手动处理会话存储的会话(这显然会破坏TLS票证的目的)。

    1. Node使用OpenSSL提供的以下功能进行故障单处理。
        

      SSL_CTX_set_tlsext_ticket_key_cb - 设置会话票据处理的回调

    2. 完整详情:https://github.com/joyent/node/blob/d13d7f74d794340ac5e126cfb4ce507fe0f803d5/deps/openssl/openssl/doc/ssl/SSL_CTX_set_tlsext_ticket_key_cb.pod

      从这里开始:https://github.com/joyent/node/blob/master/src/node_crypto.cc

      1. 节点在收到有效的TLS票证时不会发出resumeSession。 以下GitHub问题描述了为什么并且是对Node的TLS票证实现细节的简单参考。
      2. https://github.com/joyent/node/issues/5872