+++ This bug was initially created as a clone of Bug #1910749 +++ Hi. Someone broke ECDHE cipherset in rh-nodejs12-nodejs-12.19.1-2.el7.x86_64.rpm It works just fine with previous version rh-nodejs12-nodejs-12.18.2-1.el7.x86_64 . The error that occurs when trying to negotiate any ECDHE cipher (e.g., ECDHE-RSA-AES128-GCM-SHA256) on the sever side is: Error: 140121568671872:error:1408A0C1:SSL routines:ssl3_get_client_hello:no shared cipher:s3_srvr.c:1435: The application is https://github.com/haraka/Haraka and I don't have an easily reproducible case here as that would require installing and configuring whole app and I don't know the details on how the server/SSL creation is done. Maybe there's something that you've touched recently that might've been related to ECDH? Thanks. --- Additional comment from Yuri Arabadji on 2020-12-24 14:06:57 UTC --- Problem doesn't manifest itself if using stock node from https://nodejs.org/dist/v12.19.1/node-v12.19.1-linux-x64.tar.xz --- Additional comment from RHEL Program Management on 2021-01-08 15:47:31 UTC --- This bug was reopened or transitioned from a non-RHEL to RHEL product. The stale date has been reset to +6 months. --- Additional comment from RHEL Program Management on 2021-01-08 15:47:31 UTC --- Since this bug report was entered in Red Hat Bugzilla, the release flag has been set to ? to ensure that it is properly evaluated for this release. --- Additional comment from jeff dillahay on 2021-01-27 15:49:20 UTC --- The below code works on 12.18.2 but not 12.19.1 #!/usr/bin/node const fs = require('fs') require('tls') .createServer( // options { key: fs.readFileSync('test.key'), cert: fs.readFileSync('test.cer'), ca: [ fs.readFileSync('root.cer') ], // ciphers: 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256', }, // handler (socket) => socket.write('HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\nContent-Length: 2\r\nConnection: close\r\n\r\nOK\r\n') ) .listen(8433, () => { console.log(`listening on ${8433}`) }) --- Additional comment from jeff dillahay on 2021-01-27 15:55:03 UTC --- The above code has the "cipher" line commented out, but if you uncomment that and run on 12.19.1, this will replicate the problem. --- Additional comment from Jan Staněk on 2021-03-03 13:26:05 UTC --- After investigation, this issue first manifested in v12.18.4, which conincides with a OpenSSL patch refactoring effort. During the refactor, a part of the patch was missed which was necessary to properly setup ECDHE negotiation with OpenSSL 1.0.* – see the patch for the missing part. The fix was tested with the provided reproducer – thanks a lot for it! Since the same refactored patches are used in rh-nodejs14, it stands to reason it is broken there as well. I will investigate further and clone this appropriately.
Patch added to dist-git: http://pkgs.devel.redhat.com/cgit/rpms/nodejs/commit/?h=rhscl-3.7-rh-nodejs14-rhel-7&id=5c8bdd59d677b22b29b4bfcc91ada306e9ff165a
The z-stream errata should now be shipped. Switching this y-stream tracker ON_QA for verification.