Skip to content

Update to openssl1.1.1a#25381

Closed
sam-github wants to merge 11 commits intonodejs:masterfrom
sam-github:update_openssl1.1.1a
Closed

Update to openssl1.1.1a#25381
sam-github wants to merge 11 commits intonodejs:masterfrom
sam-github:update_openssl1.1.1a

Conversation

@sam-github
Copy link
Contributor

@sam-github sam-github commented Jan 7, 2019

Most of this work comes from @shigeki, who got openssl 1.1.1 building and running across all Node's platforms.

Last time I tested this branch on ci it passed, and it passes locally.

I've done a fair amount of ABI testing, as well. It looks pretty compatible to me (as OpenSSL intended).

See #18770 (comment) (and around) for more information.

@nodejs/crypto , particularly @rvagg @shigeki

Checklist
  • make -j4 test (UNIX), or vcbuild test (Windows) passes
  • tests and/or benchmarks are included
  • documentation is changed or added
  • commit message follows commit guidelines

@nodejs-github-bot
Copy link
Collaborator

@nodejs-github-bot nodejs-github-bot added build Issues and PRs related to build files or the CI. doc Issues and PRs related to the documentations. openssl Issues and PRs related to the OpenSSL dependency. labels Jan 7, 2019
@shigeki
Copy link
Contributor

shigeki commented Jan 8, 2019

@sam-github Thanks for the PR. I could not imagine we can fix an async cipher error and that's a great work. For I'm in a business trip during this week, I'm going to take a detail look at this in later.

@sam-github
Copy link
Contributor Author

@shigeki Enjoy your trip, I'll make sure you have time to review.

ci: https://ci.nodejs.org/job/node-test-commit-linux-containered/9865/

Build and test against openssl 1.1.0 was the failure above. I'll look into it.

@sam-github sam-github force-pushed the update_openssl1.1.1a branch from 8f1b9bd to e70a5e1 Compare January 10, 2019 21:01
@sam-github
Copy link
Contributor Author

The last build passed on everything except ARM.

re-ci: https://ci.nodejs.org/job/node-test-commit/25052/

danbev added a commit to danbev/node that referenced this pull request Jan 16, 2019
This commit updates option ciphers from 'RC4' to 'missing' in
test/parallel/test-tls-handshake-error.js.

The motivation for this change is that this test is verifying that a
'no ciphers match' error be thrown, but 'RC4' might be among the ciphers
supported by the OpenSSL version when dynamically linking. I ran into
this specific issue when dynamically linking against OpenSSL 1.1.1 on
RHEL8 using nodejs#25381.
@sam-github
Copy link
Contributor Author

So, been more than a week, green in CI, one approval, I guess I could just land this... but it is a significant enough update I'd like a few more reviews! @nodejs/crypto @shigeki @rvagg @bnoordhuis @indutny

1.1.1 adds some crypto algs and minor features (like zero-length PKCS8 passphrases, @tniessen ), so I'm labelling semver-minor.

@sam-github sam-github force-pushed the update_openssl1.1.1a branch from d4bfbfb to fda3b55 Compare January 17, 2019 15:35
@sam-github
Copy link
Contributor Author

Updated against node/master, squashed fixups, started a fresh CI.

ci: https://ci.nodejs.org/job/node-test-pull-request/20184/

@sam-github sam-github added the semver-minor PRs that contain new features and should be released in the next minor version. label Jan 17, 2019
danbev added a commit that referenced this pull request Jan 21, 2019
This commit updates option ciphers from 'RC4' to 'no-such-cipher' in
test/parallel/test-tls-handshake-error.js.

The motivation for this change is that this test is verifying that a
'no ciphers match' error be thrown, but 'RC4' might be among the ciphers
supported by the OpenSSL version when dynamically linking. I ran into
this specific issue when dynamically linking against OpenSSL 1.1.1 on
RHEL8 using #25381.

PR-URL: #25534
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Reviewed-By: Sam Roberts <vieuxtech@gmail.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Copy link
Contributor

@shigeki shigeki left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@sam-github Sorry for my late response. I checked your and my change commits and they are fine but some of my commits are missing commit descriptions.

I made a branch to fill the commit descriptions in https://github.com/shigeki/node/commits/PR25381.
Please rebase this to add the commit descriptions from 8e05aa0, fd5d8cb, 0dd90f3 and 01fcc96.
fd5d8cb is also fixed so as to fix within 50 chars for commit title.

Thanks for making this PR.

@sam-github
Copy link
Contributor Author

@shigeki Thanks for reviewing, I'll go through and rebase and fixup the messages.

@sam-github sam-github force-pushed the update_openssl1.1.1a branch from fda3b55 to 572326a Compare January 21, 2019 22:02
@sam-github
Copy link
Contributor Author

Added commit bodies from @shigeki, rebased, re-ci.

ci: https://ci.nodejs.org/job/node-test-pull-request/20248/

@sam-github
Copy link
Contributor Author

git node land claims commits were pushed after last CI, which I don't think is true, but re-running just in case.

ci: https://ci.nodejs.org/job/node-test-pull-request/20261/

sam-github and others added 5 commits January 22, 2019 11:36
This updates all sources in deps/openssl/openssl with openssl-1.1.1a.
Some of defines and cppflags in the build config of OpenSSL-1.1.1 were
moved to new attributes. Gyp and gypi file generations are needed to be
fixed to include them.
Because llvm on MacOS does not support AVX-512, asm files need to be limited to
AVX-2 support even when they are generated on Linux.  fake_gcc.pl returns the
fake llvm banner version for MacOS as if the assembler supports upto AVX-2.

For Windows, makefiles for nmake were updated in OpenSSL-1.1.1 and they are
rewritten into GNU makefile format by hand.
This is a floating patch against OpenSSL-1.1.1 to generate asm files
with Makefile rules.
OpenSSL-1.1.1 has new support of AVX-512 but AVX-2 asm files still need
to be generated for the older assembler support to keep backward
compatibilities.
targos pushed a commit that referenced this pull request Jan 28, 2019
This is a floating patch against OpenSSL-1.1.1 to generate asm files
with Makefile rules.

PR-URL: #25381
Reviewed-By: Daniel Bevenius <daniel.bevenius@gmail.com>
Reviewed-By: Shigeki Ohtsu <ohtsu@ohtsu.org>
Backport-PR-URL: #25688
targos pushed a commit that referenced this pull request Jan 28, 2019
OpenSSL-1.1.1 has new support of AVX-512 but AVX-2 asm files still need
to be generated for the older assembler support to keep backward
compatibilities.

PR-URL: #25381
Reviewed-By: Daniel Bevenius <daniel.bevenius@gmail.com>
Reviewed-By: Shigeki Ohtsu <ohtsu@ohtsu.org>
Backport-PR-URL: #25688
targos pushed a commit that referenced this pull request Jan 28, 2019
AIX has own assembler not GNU as that does not support --noexecstack.

PR-URL: #25381
Reviewed-By: Daniel Bevenius <daniel.bevenius@gmail.com>
Reviewed-By: Shigeki Ohtsu <ohtsu@ohtsu.org>
Backport-PR-URL: #25688
targos pushed a commit that referenced this pull request Jan 28, 2019
Add new requirements of assembler version for AVX-512 support
in OpenSSL-1.1.1.

PR-URL: #25381
Reviewed-By: Daniel Bevenius <daniel.bevenius@gmail.com>
Reviewed-By: Shigeki Ohtsu <ohtsu@ohtsu.org>
Backport-PR-URL: #25688
targos pushed a commit that referenced this pull request Jan 28, 2019
`cd deps/openssl/config; make` updates all archs dependant files.

PR-URL: #25381
Reviewed-By: Daniel Bevenius <daniel.bevenius@gmail.com>
Reviewed-By: Shigeki Ohtsu <ohtsu@ohtsu.org>
Backport-PR-URL: #25688
targos pushed a commit that referenced this pull request Jan 28, 2019
Make OpenSSL 1.1.1 error during cipher list setting if it would have
errored with OpenSSL 1.1.0.

Can be dropped after our OpenSSL fixes this upstream.

See: openssl/openssl#7759

PR-URL: #25381
Reviewed-By: Daniel Bevenius <daniel.bevenius@gmail.com>
Reviewed-By: Shigeki Ohtsu <ohtsu@ohtsu.org>
Backport-PR-URL: #25688
targos pushed a commit that referenced this pull request Jan 28, 2019
`SSL_CB_HANDSHAKE_START` and `SSL_CB_HANDSHAKE_DONE` are called
sending HelloRequest in OpenSSL-1.1.1.
We need to check whether this is in a renegotiation state or not.

PR-URL: #25381
Reviewed-By: Daniel Bevenius <daniel.bevenius@gmail.com>
Reviewed-By: Shigeki Ohtsu <ohtsu@ohtsu.org>
Backport-PR-URL: #25688
targos pushed a commit that referenced this pull request Jan 28, 2019
This gets better coverage of the codes, and is more explicit. It also
works around ordering differences in the errors produced by openssl.
The approach was tested with 1.1.0 and 1.1.1, as well as TLSv1.2 vs
TLSv1.3. OpenSSL 1.1.0 is relevant when node is built against a shared
openssl.

PR-URL: #25381
Reviewed-By: Daniel Bevenius <daniel.bevenius@gmail.com>
Reviewed-By: Shigeki Ohtsu <ohtsu@ohtsu.org>
Backport-PR-URL: #25688
@targos targos mentioned this pull request Jan 29, 2019
sam-github pushed a commit to sam-github/node that referenced this pull request Feb 26, 2019
This is a floating patch against OpenSSL-1.1.1 to generate asm files
with Makefile rules.

PR-URL: nodejs#25381
Reviewed-By: Daniel Bevenius <daniel.bevenius@gmail.com>
Reviewed-By: Shigeki Ohtsu <ohtsu@ohtsu.org>
@BethGriggs BethGriggs mentioned this pull request May 1, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

build Issues and PRs related to build files or the CI. doc Issues and PRs related to the documentations. openssl Issues and PRs related to the OpenSSL dependency. semver-minor PRs that contain new features and should be released in the next minor version.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants