node.js - Nodejs如何从https服务器获取TLS对象

标签 node.js ssl https

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

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

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

我知道我可以在创建 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 等添加值,我不确定到底要设置什么。我假设有某种方法可以获得 tls 句柄,通过它我可以设置这些值。

这里有什么帮助吗...?

最佳答案

您无法获取 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 does not support renegotiation.

https模块依赖于tls ,所以无论您设置为 tls 的有效值如何将适用于https

You can not pass CLIENT_RENEG_LIMIT as https options because options <Object> Accepts options from tls.createServer(),tls.createSecureContext() and http.createServer().

See tls.createServer options

关于node.js - Nodejs如何从https服务器获取TLS对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59908809/

相关文章:

javascript - 尝试使用 Express.js 和 Jade 从 MongoDB 数据库中删除条目

firefox - 为什么 Firefox 说我的网站正在使用 "invalid security certificate"?

java.net.SocketException : Connection reset for inputstream 异常

java - 通过 https 连接时出现 SSL 握手异常

asp.net - SSL - ASP.NET - 使用 Fiddler 检查时以纯文本形式传递的密码

node.js - 如何在foreach循环中等待异步函数

javascript - 无法使用 req.session 在特定路由中设置未定义的属性 'X'

node.js - 错误消息: Unable to find element with xpath in phantomsJS

ssl - 如果我使用来自非 SSL 网站的 API,浏览器是否需要给出混合内容错误?

ssl - 如何在 nginx 上启用反向 TLSv1 和 TLSv1.1?