mirror of
https://github.com/Ylianst/MeshCentral.git
synced 2025-03-09 15:40:18 +00:00
Add options for overriding TLS ciphers used (#5915)
* Add the ability to set TLS cipher suites Added config option to set the TLS ciphers instead of relying on a hardcoded list of ciphers determined by meshcentral. * Added option to use default node ciphers This allows the ciphers used to be set to the recommended ciphers by nodejs, as well as allowing the user to override the ciphers using the "--tls-cipher-list" command line switch for node. * Updated validArguments array to include "usenodedefaulttlsciphers" and "tlsciphers" as options
This commit is contained in:
parent
dfc08b05a9
commit
150e2337f5
3 changed files with 27 additions and 1 deletions
13
webserver.js
13
webserver.js
|
@ -72,6 +72,8 @@ module.exports.CreateWebServer = function (parent, db, args, certificates, doneF
|
|||
obj.users = {}; // UserID --> User
|
||||
obj.meshes = {}; // MeshID --> Mesh (also called device group)
|
||||
obj.userGroups = {}; // UGrpID --> User Group
|
||||
obj.useNodeDefaultTLSCiphers = args.usenodedefaulttlsciphers; // Use TLS ciphers provided by node
|
||||
obj.tlsCiphers = args.tlsciphers; // List of TLS ciphers to use
|
||||
obj.userAllowedIp = args.userallowedip; // List of allowed IP addresses for users
|
||||
obj.agentAllowedIp = args.agentallowedip; // List of allowed IP addresses for agents
|
||||
obj.agentBlockedIp = args.agentblockedip; // List of blocked IP addresses for agents
|
||||
|
@ -6135,6 +6137,17 @@ module.exports.CreateWebServer = function (parent, db, args, certificates, doneF
|
|||
'!CAMELLIA'
|
||||
].join(':');
|
||||
|
||||
if (obj.useNodeDefaultTLSCiphers) {
|
||||
ciphers = require("tls").DEFAULT_CIPHERS;
|
||||
}
|
||||
|
||||
if (obj.tlsCiphers) {
|
||||
ciphers = obj.tlsCiphers;
|
||||
if (Array.isArray(obj.tlsCiphers)) {
|
||||
ciphers = obj.tlsCiphers.join(":");
|
||||
}
|
||||
}
|
||||
|
||||
// Setup the HTTP server with TLS, use only TLS 1.2 and higher with perfect forward secrecy (PFS).
|
||||
//const tlsOptions = { cert: obj.certificates.web.cert, key: obj.certificates.web.key, ca: obj.certificates.web.ca, rejectUnauthorized: true, ciphers: "HIGH:!aNULL:!eNULL:!EXPORT:!RSA:!DES:!RC4:!MD5:!PSK:!SRP:!CAMELLIA", secureOptions: constants.SSL_OP_NO_SSLv2 | constants.SSL_OP_NO_SSLv3 | constants.SSL_OP_NO_COMPRESSION | constants.SSL_OP_CIPHER_SERVER_PREFERENCE | constants.SSL_OP_NO_TLSv1 | constants.SSL_OP_NO_TLSv1_1 }; // This does not work with TLS 1.3
|
||||
const tlsOptions = { cert: obj.certificates.web.cert, key: obj.certificates.web.key, ca: obj.certificates.web.ca, rejectUnauthorized: true, ciphers: ciphers, secureOptions: constants.SSL_OP_NO_SSLv2 | constants.SSL_OP_NO_SSLv3 | constants.SSL_OP_NO_COMPRESSION | constants.SSL_OP_CIPHER_SERVER_PREFERENCE | constants.SSL_OP_NO_TLSv1 | constants.SSL_OP_NO_TLSv1_1 };
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue