node.js - Nodejs如何从https服务器获取TLS对象
问题描述
我正在使用使用 nodejs 的 https 服务器。出于安全原因,我必须更改某些 ssl 参数。更具体地说,我必须设置/禁用“客户端重新协商限制”。
根据此处的标准文档,我必须将 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 不支持重新协商。
https
模块依赖于tls
,因此您设置的任何有效值tls
都将适用于https
您不能
CLIENT_RENEG_LIMIT
作为https
选项传递,因为options <Object>
接受来自tls.createServer()
和tls.createSecureContext()
的 选项http.createServer()
。
推荐阅读
- python - Python Pandas:根据前一行的重复值删除行
- c# - 为什么我不能在扩展方法中更新字符串的值?
- reactjs - ts-mocha 和 chai - 错误 TS2695:逗号运算符的左侧未使用且没有副作用
- allennlp - Predictor.from_archive 失败
- javascript - A-frame 在功能上添加启用/禁用组件
- ffmpeg - 如何将所有音轨合并为一个
- discord.py - 齿轮不和谐中的狙击命令,py
- python - 打印排序数字列表中的中间整数
- python - 如果行中的最后一列为 NULL,则通过 MySQL 'LOAD DATA' 命令加载 NULL 值不起作用
- powershell - 使用 powershell 提取 zip 文件,读取文件,然后在标签之间提取值