【问题标题】:NodeJs " Forward Secrecy" issuesNodeJs“前向保密”问题
【发布时间】:2019-07-27 14:47:34
【问题描述】:

我试图在 ssllabs.com 上为我的网站 www.cloudcaptcha.ga 获得 A+ 分,但收到以下警告:“此服务器不支持参考浏览器的前向保密。等级上限为 B'

我正在使用带有 http2 服务器模块的 NodeJs v12.6。使用

生成有效的 dhparam

openssl dhparam -outform PEM -out dhparam.pem 2048

但这无济于事。

我当前服务器的secureContextOptions =

{
  ca: fs.readFileSync('chain.pem'),
  cert: fs.readFileSync('fullchain.pem', 'utf8'),
  key: fs.readFileSync('privkey.pem', 'utf8'),
  dhparam: fs.readFileSync('dhparam.pem', 'utf8'),
  rejectUnauthorized: false,
  honorCipherOrder: false,
  allowHTTP1: true,
  ecdhCurve: 'auto',
}

如何解决这个前向保密问题?

【问题讨论】:

标签: node.js ssl tls1.2


【解决方案1】:

前向保密的问题可能是由禁用的honorCipherOrder选项引起的,请尝试启用它。

honorCipherOrder: true

honorCipherOrder 被禁用时,握手期间协商的密码套件将根据 TLS 客户端首选项进行选择。有 TLS 客户端(例如 IE 11 / Win Phone 8.1)更喜欢非 FS 密码套件而不是 FS 密码套件。

为了获得A+,还需要requiredStrict-Transport-Security (HSTS) 标头添加到max-age 至少为6 个月的每个响应中:

为具有卓越性能的服务器引入了新的 A+ 级 配置。目前,此等级授予具有以下功能的服务器 良好的配置、无警告和 HTTP 严格传输安全性 支持的最大年龄至少为 6 个月。

最大年龄设置为 1 年的 HSTS 标头示例:

Strict-Transport-Security: max-age=31536000;

使用本机 node.js 响应对象,您可以使用 response.setHeader 设置标头:

response.setHeader("Strict-Transport-Security", "max-age=31536000");

如果您使用 express,您还可以检查 helmet 或编写一个简单的中间件,将标头添加到每个响应中。

【讨论】:

  • 是的。是帮助。我得了“A”分。有意思,能拿到'A+'吗?
  • 是的,为了获得A+,您应该尝试添加Strict-Transport-Security 标头。我已经更新了答案。
猜你喜欢
  • 1970-01-01
  • 2012-08-26
  • 2019-05-27
  • 2020-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-21
  • 2011-09-01
相关资源
最近更新 更多