Node.js如何从https服务器获取TLS对象

时间:2020-01-25 11:34:30

标签: node.js ssl https

我正在使用一个使用nodejs的https服务器。出于安全原因,我必须更改某些ssl参数。更具体地说,我必须设置/禁用“客户端重新协商限制”。

根据标准文档here,我必须将tls.CLIENT_RENEG_LIMIT设置或更改为我的值。

由于我使用的是https模块,因此可以访问https服务器。我的问题是如何从https服务器获取tls对象,以便我可以设置值。

我了解在创建如下所示的https服务器时可以设置一些选项。

re.findall()

但是,如果要为tls.CLIENT_RENEG_LIMIT或tls.CLIENT_RENEG_WINDOW等添加值,我不确定要确切设置什么。我假设会有某种方式可以获取可以设置这些值的tls句柄。 / p>

这里有帮助吗??

1 个答案:

答案 0 :(得分:1)

您无法从https服务器对象获取TLS对象,但是可以使用内置模块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()

See tls.createServer options