Skip to content

Commit d0d1a05

Browse files
committed
tls: make 'createSecureContext' honor more options.
Added options: `ticketKeys` and `sessionTimeout`, that are honored by `createServer`, that calls `createSecureContext`. This also introduces a minor code simplification. Fixes: nodejs#20908
1 parent 178e52a commit d0d1a05

File tree

3 files changed

+22
-9
lines changed

3 files changed

+22
-9
lines changed

doc/api/tls.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1622,6 +1622,11 @@ changes:
16221622
**Default:** none, see `minVersion`.
16231623
* `sessionIdContext` {string} Opaque identifier used by servers to ensure
16241624
session state is not shared between applications. Unused by clients.
1625+
* `ticketKeys`: {Buffer} 48-bytes of cryptographically strong pseudo-random
1626+
data. See [Session Resumption][] for more information.
1627+
* `sessionTimeout` {number} The number of seconds after which a TLS session
1628+
created by the server will no longer be resumable. See
1629+
[Session Resumption][] for more information. **Default:** `300`.
16251630

16261631
[`tls.createServer()`][] sets the default value of the `honorCipherOrder` option
16271632
to `true`, other APIs that create secure contexts leave it unset.

lib/_tls_common.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -294,6 +294,14 @@ exports.createSecureContext = function createSecureContext(options) {
294294
options.clientCertEngine);
295295
}
296296

297+
if (options.ticketKeys) {
298+
c.context.setTicketKeys(options.ticketKeys);
299+
}
300+
301+
if (options.sessionTimeout) {
302+
c.context.setSessionTimeout(options.sessionTimeout);
303+
}
304+
297305
return c;
298306
};
299307

lib/_tls_wrap.js

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1315,6 +1315,12 @@ Server.prototype.setSecureContext = function(options) {
13151315
.slice(0, 32);
13161316
}
13171317

1318+
if (options.sessionTimeout)
1319+
this.sessionTimeout = options.sessionTimeout;
1320+
1321+
if (options.ticketKeys)
1322+
this.ticketKeys = options.ticketKeys;
1323+
13181324
this._sharedCreds = tls.createSecureContext({
13191325
pfx: this.pfx,
13201326
key: this.key,
@@ -1332,16 +1338,10 @@ Server.prototype.setSecureContext = function(options) {
13321338
secureOptions: this.secureOptions,
13331339
honorCipherOrder: this.honorCipherOrder,
13341340
crl: this.crl,
1335-
sessionIdContext: this.sessionIdContext
1341+
sessionIdContext: this.sessionIdContext,
1342+
ticketKeys: this.ticketKeys,
1343+
sessionTimeout: this.sessionTimeout
13361344
});
1337-
1338-
if (this.sessionTimeout)
1339-
this._sharedCreds.context.setSessionTimeout(this.sessionTimeout);
1340-
1341-
if (options.ticketKeys) {
1342-
this.ticketKeys = options.ticketKeys;
1343-
this.setTicketKeys(this.ticketKeys);
1344-
}
13451345
};
13461346

13471347

0 commit comments

Comments
 (0)