Nodejs как получить объект TLS с сервера https - PullRequest
1 голос
/ 25 января 2020

Я использую сервер https, используя nodejs. Из соображений безопасности я должен изменить некоторые параметры ssl. Более конкретно, я должен установить / отключить «лимит повторного согласования клиента».

Согласно стандартной документации здесь , мне нужно установить или изменить tls.CLIENT_RENEG_LIMIT на мое значение.

Поскольку я использую модуль https, у меня есть доступ к серверу https. Мой вопрос заключается в том, как получить объект tls с сервера https, чтобы я мог устанавливать значения.

Я понимаю, что могу настроить несколько параметров при создании сервера https, как показано ниже.

const options = {
  key: fs.readFileSync('app-key.pem'),
  cert: fs.readFileSync('app-cert.pem'),
  secureOptions: constants.SSL_OP_NO_SSLV2 | ...,
  ciphers: [...]
}

Однако я не уверен, что именно нужно установить, если бы я должен был добавить значения для tls.CLIENT_RENEG_LIMIT или tls.CLIENT_RENEG_WINDOW et c. Я предполагаю, что был бы какой-то способ получить дескриптор tls, с помощью которого я мог бы установить их.

Любая помощь здесь ...?

1 Ответ

3 голосов
/ 25 января 2020

Вы не можете получить объект TLS из объекта сервера https, но вы можете использовать встроенный модуль tls для установки требуемой опции. Перед созданием https сервера вы можете установить значения следующим образом:

   const tls  =  require('tls')

    tls.CLIENT_RENEG_LIMIT = ' required value'

    const options = {
      key: fs.readFileSync('app-key.pem'),
      cert: fs.readFileSync('app-cert.pem'),
      secureOptions: constants.SSL_OP_NO_SSLV2 | ...,
      ciphers: [...]
    }

const server = https.createServer(options,function(req,res){
     res.writeHead(200);
     res.end('hello world\n');
    })

server.listen(8080);

TLSv1.3 не поддерживает пересогласование.

https модуль зависит от tls, поэтому любое действительное значение, установленное для tls, будет применимо для https

Вы не можете передать CLIENT_RENEG_LIMIT в качестве https параметров, поскольку options <Object> Принимает параметры от tls.createServer(), tls.createSecureContext() и http.createServer().

См. Опции tls.createServer

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...