如何使用Node.js禁用TLS 1.0并仅使用TLS 1.1?

13
我想禁用TLS v1.0,仅使用TLS 1.1及以上版本。
我正在使用Node.js中的https模块,如何设置https选项?
我已经阅读了API文档node api tls,但仍然不知道该如何设置。
我认为这取决于secureProtocolcipher,但我不知道该如何设置它们的值。
我的Node版本是0.10.36,OpenSSL版本是0.9.8j。

我认为答案已经在这里了:https://dev59.com/M37aa4cB1Zd3GeqPoEdv - B3rn475
@B3rn475 我明白了,但似乎不起作用... - shangyin
4个回答

9

Marco的解决方案对我有用,但由于TLS 1.1也被认为是一种漏洞,最好禁用两个版本并使用TLS 1.2

const { constants } = require('crypto')
https.createServer({
    secureOptions: constants.SSL_OP_NO_TLSv1 | constants.SSL_OP_NO_TLSv1_1
    pfx: fs.readFileSync(path.resolve(pathToCert))
}, app).listen(443)

7

TLS 1.0 不应再使用。以下方法可以在 node.js 中禁用 TLS 1.0:

https.createServer({
    secureOptions: require('constants').SSL_OP_NO_TLSv1,
    pfx: fs.readFileSync(path.resolve(pathToCert))
}, app).listen(443);

You can verify this using this tool: ssllabs


嗯,我已经尝试过这个了,包括禁用1.1版本的TLS,但结果很奇怪。Firefox和whynopadlock仍然抱怨TLS,但Chrome却可以正常使用。 - Gerry

4
常量模块的使用未记录。禁用TLS v1.0的更好方法是改用加密模块中的常量。有关参考,请参见Node.js网站上的文档
解决方案如下:
const { constants } = require('crypto')
https.createServer({
    secureOptions: constants.SSL_OP_NO_TLSv1,
    pfx: fs.readFileSync(path.resolve(pathToCert))
}, app).listen(443)

4
如果有人在使用MEANjs,以下内容可能会有所帮助:
使用
secureProtocol: 'TLSv1_2_server_method',

取代

secureProtocol: 'TLSv1_method',

文件位置为 config/lib/socket.io.js

可以正常工作。图片描述


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接