将chacha20-poly1305与节点一起使用

时间:2018-06-24 07:08:54

标签: javascript node.js ssl encryption

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

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

但是,在与支持chacha的浏览器连接时,仅通过chacha传递https.createServer()http2.createServer()ciphers列表会导致无共享密码错误。密码示例列表:

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);

这是节点或我忽略的其他配置选项的错误吗?

1 个答案:

答案 0 :(得分:0)

作为GitHub上的mscdex explained,我尝试使用的字符串格式错误。如果将字符串从大写转换为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' ]