Node.js 16.15.0配置仅启用TLS 1.3失败及后续问题求助
解决Node.js应用强制使用TLS 1.3的问题
问题分析
- 设置
minVersion: 'TLSv1.3'报错,核心原因是系统依赖的OpenSSL版本不支持TLS 1.3——Node.js 16.x虽官方支持TLS 1.3,但需要底层OpenSSL版本≥1.1.1(TLS 1.3是在OpenSSL 1.1.1中正式引入的)。如果系统OpenSSL版本低于该要求,即使Node.js版本达标,也会识别不了'TLSv1.3'这个版本值。 - 使用
tls.DEFAULT_MAX_VERSION后仍用TLS 1.2,是因为Node.js 16.x中这个默认值就是'TLSv1.2',必须手动指定版本才能切换到TLS 1.3。
解决步骤
第一步:检查系统OpenSSL版本
执行终端命令:openssl version确保输出版本号≥
OpenSSL 1.1.1。如果版本过低,需要升级系统OpenSSL,或重新编译Node.js绑定高版本OpenSSL。第二步:修正代码配置
确保TLS版本参数正确,同时修正服务启动的变量名笔误(你代码中创建的是httpsServer,但最后启动的是httpServer):var options = { key: key, cert: cert, ca: ca, passphrase: passphrase, requestCert: true, rejectUnauthorized: false, minVersion: 'TLSv1.3', maxVersion: 'TLSv1.3' } var httpsServer = https.createServer(options, app); httpsServer.listen(8443); // 使用创建好的httpsServer启动服务第三步:验证TLS 1.3连接
用终端命令测试是否成功启用:# 使用curl测试 curl -v --tlsv1.3 https://your-domain:8443 # 或用openssl测试 openssl s_client -connect your-domain:8443 -tls1_3如果连接成功,终端会显示
TLSv1.3相关的握手信息;浏览器端也会在安全面板显示TLS 1.3。
内容的提问来源于stack exchange,提问作者VultureMF
相关产品推荐
相关产品推荐

