Skip to content

crypto: mk-ca-bundle.pl drops Izenpe.com and loses NSS SERVER_DISTRUST_AFTER semantics #64752

Description

@Archkon

Version

latest main branch

Platform


Subsystem

crypto

What steps will reproduce the bug?

  const { X509Certificate } = require('node:crypto');
  const tls = require('node:tls');

  const izenpeFingerprint =
    '25:30:CC:8E:98:32:15:02:BA:D9:6F:9B:1F:BA:1B:09:' +
    '9E:2D:29:9E:0F:45:48:BB:91:4F:36:3B:C0:D4:53:1F';

  const found = tls.rootCertificates.some((pem) => {
    return new X509Certificate(pem).fingerprint256 === izenpeFingerprint;
  });

  console.log(tls.rootCertificates.length); // 120
  console.log(found); // false

How often does it reproduce? Is there a required condition?

Every

What is the expected behavior? Why is that the expected behavior?

Izenpe.com should remain in the bundled CA store.

Its NSS policy specifies:

CKA_NSS_SERVER_DISTRUST_AFTER = 260415235959Z

Therefore, assuming all other certificate validation succeeds:

  • A server certificate with NotBefore <= 2026-04-15 23:59:59Z should remain trusted.
  • A server certificate with NotBefore > 2026-04-15 23:59:59Z should be rejected.

The cutoff applies to the end-entity certificate’s issuance time. It does not mean that the entire root must be removed after that date.

Retained roots with a server distrust-after constraint continue to trust post-cutoff certificates because the metadata is discarded during PEM generation.

What do you see instead?

The generated src/node_root_certs.h contains 120 valid PEM certificates, but Izenpe.com is missing.

As a result, TLS server chains anchored to Izenpe fail when Node uses its bundled CA store, including chains whose end-entity certificate was issued before the NSS distrust after cutoff.

The missing root can be detected with:

All existing PEM entries still parse successfully, so a test that only validates PEM syntax does not detect the missing trust anchor.

Additional information

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    cryptoIssues and PRs related to the crypto subsystem.toolsIssues and PRs related to the tools directory.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions