node/test/parallel/test-process-config.js
Daniel Bevenius 2268d00e38
src: add openssl-system-ca-path configure option
The motivation for this commit is that we need to specify system CA
certificates when building node. While we are aware of the environment
variable NODE_EXTRA_CA_CERTS this is not a great solution as we build
an RPM and we also don't want users to be able to unset them.

The suggestion is to add a configure time property like this:

--openssl-system-ca-path=OPENSSL_SYSTEM_CA_PATH
             Use the specified path to system CA (PEM format) in
             addition to the OpenSSL supplied CA store or compiled-
             in Mozilla CA copy.

Usage example:
$ ./configure --openssl-system-ca-path=/etc/pki/tls/certs/ca-bundle.crt

This would add the specified CA certificates in addition to the ones
already being used.

Backport-PR-URL: https://github.com/nodejs/node/pull/18173
PR-URL: https://github.com/nodejs/node/pull/16790
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Tobias Nießen <tniessen@tnie.de>
2018-02-12 19:28:12 -05:00

45 lines
1.2 KiB
JavaScript

'use strict';
const common = require('../common');
// Checks that the internal process.config is equivalent to the config.gypi file
// created when we run configure.
const assert = require('assert');
const fs = require('fs');
const path = require('path');
// Check for existence of `process.config`.
assert(process.hasOwnProperty('config'));
// Ensure that `process.config` is an Object.
assert.strictEqual(Object(process.config), process.config);
const configPath = path.resolve(__dirname, '..', '..', 'config.gypi');
if (!fs.existsSync(configPath)) {
common.skip('config.gypi does not exist.');
}
let config = fs.readFileSync(configPath, 'utf8');
// Clean up comment at the first line.
config = config.split('\n').slice(1).join('\n');
config = config.replace(/"/g, '\\"');
config = config.replace(/'/g, '"');
config = JSON.parse(config, function(key, value) {
if (value === 'true') return true;
if (value === 'false') return false;
return value;
});
try {
assert.deepStrictEqual(config, process.config);
} catch (e) {
// If the assert fails, it only shows 3 lines. We need all the output to
// compare.
console.log('config:', config);
console.log('process.config:', process.config);
throw e;
}