javascript - 将 chacha20-poly1305 与 Node 一起使用

标签 javascript node.js ssl encryption

Node 的旧版本 did not support chacha20-poly1305,但是as of version 10.0.0 , Node 支持 openssl 1.1.0,其中包括 chacha。

  • require('tls').getCiphers() 包括 chacha。
  • $ openssl ciphers 包括 chacha。

但是传递 https.createServer()http2.createServer() 一个只有 chacha 的 ciphers 列表导致没有共享cipher 连接支持 chacha 的浏览器时出错。密码列表示例:

https.createServer({
    // ...
    'ciphers': [
        'TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256',
        'TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256',
        'TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256',
        'TLS_PSK_WITH_CHACHA20_POLY1305_SHA256',
        'TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256',
        'TLS_DHE_PSK_WITH_CHACHA20_POLY1305_SHA256',
        'TLS_RSA_PSK_WITH_CHACHA20_POLY1305_SHA256'
    ].join(':')
}, someFunction).listen(443);

这是 Node 错误还是我忽略的其他配置选项?

最佳答案

作为 mscdex explained在 GitHub 上,我尝试使用的字符串格式错误。 tls.getCiphers() 将返回有效的字符串,如果您将字符串从它转换为大写。

例如,以下内容:

tls.getCiphers().filter((str) => str.includes('chacha')).map((str) => str.toUpperCase())

为我返回这个:

[ 'DHE-PSK-CHACHA20-POLY1305',
  'DHE-RSA-CHACHA20-POLY1305',
  'ECDHE-ECDSA-CHACHA20-POLY1305',
  'ECDHE-PSK-CHACHA20-POLY1305',
  'ECDHE-RSA-CHACHA20-POLY1305',
  'PSK-CHACHA20-POLY1305',
  'RSA-PSK-CHACHA20-POLY1305' ]

关于javascript - 将 chacha20-poly1305 与 Node 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51007706/

相关文章:

javascript - 在 Node.js 中,只有在调用 end() 后,我发送到 stdin 的数据才会到达进程。如果我想继续写怎么办?

node.js - 检查失败 : U_SUCCESS(status)

javascript - 在 Backbone View 中处理图像错误事件

javascript - FullCalendar 2.3.0 更改悬停时的日期颜色

javascript - 如何使用 winston logger 记录 Node 错误?

.net - Blazor 错误 : The SSL connection could not be established, 请参阅内部异常

.htaccess - 通过 Htaccess 禁用 SSL 证书 HTTPS 重定向

ssl - 在 Tableau 工作簿 URL 上配置 SSL

javascript - jQuery 动画不同步

javascript - 在 BBC micro :bit does not do anything 上用 microPython 写模拟