【问题标题】:Node TLS Ticket Reestablish Connection节点 TLS 票证重新建立连接
【发布时间】:2015-10-15 01:24:27
【问题描述】:

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

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

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

谢谢

【问题讨论】:

    标签: node.js session ssl


    【解决方案1】:

    在花费了超出我应有的时间之后,我发现了这些:

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

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

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

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

    1. Node 使用 OpenSSL 提供的以下函数进行 Ticket 处理。

      SSL_CTX_set_tlsext_ticket_key_cb - 为会话票证处理设置回调

    详细信息: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 票证实施细节的简单参考。

    https://github.com/joyent/node/issues/5872

    【讨论】:

    • 谢谢,在我接受之前,我会检查一下自己github.com/joyent/node/blob/master/src/node_crypto.cc。我仍然希望它可能会通过一些 js hacking 暴露出来。
    • getTicketKeyssetTicketKeys 可能是您正在寻找的功能。但是,我似乎找不到他们被调用的地方。来自用于设置键的 openssl 文档,The callback function cb will be called for every client instigated TLS session when session ticket extension is presented in the TLS hello message. It is the responsibility of this function to create or retrieve the cryptographic parameters and to maintain their state. 但是,我找不到它的完成方式或位置。
    • 让我知道你发现了什么以及你最终是如何实现它的。也许,如果你能与 Fedor Indutny 取得联系,你会得到最详细的解释。
    • 我怀疑在 SecureContext::Init 中调用了回调。所以我希望有可能在github.com/joyent/node/blob/master/lib/_tls_common.js 中构造一个 SecureContext 并在之后检查状态。
    • 好吧,所以 Openssl 是一个怪物 C++ 代码库,很难找到发生任何事情的地方。现在我想知道是否有另一个 javascript/node 代码库只具有一个函数,该函数采用 TLSTicket 和 TLSKey,如果有效则返回 True,否则返回 False,并返回会话密钥。我在看forge:github.com/digitalbazaar/forge.
    猜你喜欢
    • 2015-12-05
    • 1970-01-01
    • 2021-11-18
    • 2015-01-27
    • 2020-06-13
    • 2019-05-04
    • 2016-01-11
    • 2013-04-16
    相关资源
    最近更新 更多