节点TLS票据重build连接
我在做nodejs的实验。 我正尝试使用TLS票证来恢复TLS会话。 所以我会在连接成功后让客户端保存掉TLS Ticket。 closures后,我希望它使用相同的TLS票证重新build立TLS连接。
我发现节点tls命令tlsSocket.getTLSTicket()
但是我不知道如何使用它来重新build立连接,因为它是“只用于debugging”。
我想要的是从客户端获取TLSTicket的能力,并通过nodejs中的服务器中的TLSTicketKey手动validation它。
谢谢
花了比我应该有更多的时间后,这些是我发现:
- 似乎没有任何API或暴露的JavaScript函数可以让您validationTLSTickets。
通过会话票据重复使用会话可以直接使用,对于您的node.js,实现是完全透明的
https://strongloop.com/strongblog/improve-the-performance-of-the-node-js-https-server/
但是,正如您将在链接中看到的那样,可以手动处理与会话存储的会话(这明显违背了TLS票证的用途)。
- 节点使用OpenSSL提供的以下function来执行票证处理。
SSL_CTX_set_tlsext_ticket_key_cb – 为会话票证处理设置callback
全部细节: 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
- 当它收到有效的TLS票证时,节点不会发出
resumeSession
。 以下GitHub问题描述了为什么并且是对Node的TLS票据实现细节的简单引用。