From 54458356718488e8569eb9ba1ebaf85d765efb83 Mon Sep 17 00:00:00 2001 From: Raghu Saxena Date: Thu, 25 May 2023 00:40:39 +0800 Subject: [PATCH] src: check node_extra_ca_certs after openssl cfg MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit I recently discovered that the custom NodeJS specific OpenSSL config section in openssl.cnf would not be respected, if the environment variable `NODE_EXTRA_CA_CERTS` was set. This happens even if it contains an invalid value, i.e no actual certs are read. Someone suggested moving the checking of extra ca certs to after the OpenSSL config is read, and this seems to work. PR-URL: https://github.com/nodejs/node/pull/48159 Reviewed-By: Richard Lau Reviewed-By: Tobias Nießen Reviewed-By: Minwoo Jung Reviewed-By: Michael Dawson --- src/node.cc | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/node.cc b/src/node.cc index 60b3df63a7aaa2..9b0dd072f7b883 100644 --- a/src/node.cc +++ b/src/node.cc @@ -969,11 +969,6 @@ std::unique_ptr InitializeOncePerProcess( return ret; }; - { - std::string extra_ca_certs; - if (credentials::SafeGetenv("NODE_EXTRA_CA_CERTS", &extra_ca_certs)) - crypto::UseExtraCaCerts(extra_ca_certs); - } // In the case of FIPS builds we should make sure // the random source is properly initialized first. #if OPENSSL_VERSION_MAJOR >= 3 @@ -1058,6 +1053,12 @@ std::unique_ptr InitializeOncePerProcess( CHECK(crypto::CSPRNG(buffer, length).is_ok()); return true; }); + + { + std::string extra_ca_certs; + if (credentials::SafeGetenv("NODE_EXTRA_CA_CERTS", &extra_ca_certs)) + crypto::UseExtraCaCerts(extra_ca_certs); + } #endif // HAVE_OPENSSL && !defined(OPENSSL_IS_BORINGSSL) }