Использование chacha20-poly1305 с узлом - PullRequest
0 голосов
/ 24 июня 2018

Старые версии узла не поддерживали chacha20-poly1305, но начиная с версии 10.0.0 , узел поддерживал openssl 1.1.0, который включает chacha.

  • require('tls').getCiphers() включает чачу.
  • $ openssl ciphers включает чачу.

Но передача списка https.createServer() и http2.createServer() * ciphers только с chacha приводит к ошибке no shared 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);

Это ошибка узла или какой-то другой опции конфигурации, которую я пропустил?

1 Ответ

0 голосов
/ 28 марта 2019

Как объяснил mscdex на 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' ]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...