node/test/fixtures/tls-get-ca-certificates.js
Joyee Cheung a7909014f7
tls: implement tls.getCACertificates()
To accompany --use-system-ca, this adds a new API that allows
querying various kinds of CA certificates.

- If the first argument `type` is `"default"` or undefined,
  it returns the CA certificates that will be used by Node.js
  TLS clients by default, which includes the Mozilla CA
  if --use-bundled-ca is enabled or --use-openssl-ca is not
  enabled, and the system certificates if --use-system-ca
  is enabled, and the extra certificates if NODE_EXTRA_CA_CERTS
  is used.
- If `type` is `"system"` this returns the system certificates,
  regardless of whether --use-system-ca is enabeld or not.
- If `type` is `"bundled"` this is the same as `tls.rootCertificates`
  and returns the Mozilla CA certificates.
- If `type` is `"extra"` this returns the certificates parsed
  from the path specified by NODE_EXTRA_CA_CERTS.

Drive-by: remove the inaccurate description in `tls.rootCertificates`
about including system certificates, since it in fact does not include
them, and also it is contradicting the previous description about
`tls.rootCertificates` always returning the Mozilla CA store and
staying the same across platforms.

PR-URL: https://github.com/nodejs/node/pull/57107
Reviewed-By: James M Snell <jasnell@gmail.com>
2025-03-06 17:16:27 +00:00

11 lines
370 B
JavaScript

'use strict';
// This fixture just writes tls.getCACertificates() outputs to process.env.CA_OUT
const tls = require('tls');
const fs = require('fs');
const assert = require('assert');
assert(process.env.CA_TYPE);
assert(process.env.CA_OUT);
const certs = tls.getCACertificates(process.env.CA_TYPE);
fs.writeFileSync(process.env.CA_OUT, JSON.stringify(certs), 'utf8');