Skip to content

Pull certdata.txt from NSS master - #90

Merged
ericmj merged 1 commit into
mainfrom
pull-certdata-from-nss
Oct 20, 2026
Merged

ericmj merged 1 commit into
mainfrom
pull-certdata-from-nss

Conversation

@ericmj

@ericmj ericmj commented Oct 20, 2026

Copy link
Copy Markdown
Member

mix certdata now reads certdata.txt from the NSS master branch instead of the Firefox release branch that mk-ca-bundle.pl uses by default. Mozilla's root store changes land in NSS first and reach Firefox release about a release cycle later: the root changes NSS landed on 2026-07-14 reached castore on 2026-08-13. Firefox covers that gap for its own users with OneCRL and CRLite. Erlang :ssl doesn't check revocation by default, so the bundle is the only protection castore users get.

This picks up the removal of emSign ECC Root CA - G3, emSign Root CA - C1 and emSign ECC Root CA - C3 from NSS (0a2b0c7, 1573410). The private keys of eight eMudhra intermediate CAs were compromised (https://emudhra.we-have-a-problem.com). Through the emSign Root TLS CA - G3 cross-sign they chain to emSign ECC Root CA - G3, so Erlang :ssl with castore 1.0.21 accepts servers using those intermediates. With this bundle, all 12 test hosts from the incident page are rejected with unknown_ca. The result has the same 118 certificates as curl's 2026-10-20 cacert.pem, which excludes the same three roots.

Every entry also gains the SHA-256 fingerprint comment that mk-ca-bundle.pl started emitting in version 1.34. VERSION is bumped to 1.0.22 so the Publish workflow releases it on merge.

Closes #89

Mozilla's root store changes land in NSS first and reach the Firefox
release branch, which mk-ca-bundle.pl reads by default, about a
release cycle later. The root changes NSS landed on 2026-07-14 reached
castore on 2026-08-13. Firefox covers that gap for its own users with
OneCRL and CRLite. Erlang :ssl doesn't check revocation by default, so
the bundle is the only protection castore users get.

This picks up the removal of emSign ECC Root CA - G3, emSign Root CA -
C1 and emSign ECC Root CA - C3 from NSS:
mozilla/nss@0a2b0c7
mozilla/nss@1573410

The private keys of eight eMudhra intermediate CAs were compromised
(https://emudhra.we-have-a-problem.com). Through the emSign Root TLS CA
- G3 cross-sign they chain to emSign ECC Root CA - G3, so Erlang :ssl
with castore 1.0.21 accepts servers using those intermediates.

Every entry also gains the SHA-256 fingerprint comment that
mk-ca-bundle.pl started emitting in version 1.34.

Closes #89
@ericmj
ericmj marked this pull request as ready for review October 20, 2026 16:09
@ericmj
ericmj merged commit 27997a2 into main Oct 20, 2026
4 checks passed
@ericmj
ericmj deleted the pull-certdata-from-nss branch October 20, 2026 16:23
ericmj added a commit to hexpm/hex that referenced this pull request Oct 20, 2026
Mozilla's root store changes land in NSS first and reach certdata.txt on
the Firefox release branch, which mk-ca-bundle.pl reads by default, about
a release cycle later. Firefox release still has the three emSign roots
NSS removed on 2026-10-20, so running mix certdata added them back. castore
made the same change in elixir-mint/castore#90.
ericmj added a commit to hexpm/hex that referenced this pull request Oct 20, 2026
* Stop trusting the emSign roots Mozilla removed

The private keys of eight eMudhra intermediate CAs were compromised
(https://emudhra.we-have-a-problem.com). Six of the incident's twelve test
hosts chain to emSign ECC Root CA - G3 and Hex accepted them with its
bundled CA store. NSS removed emSign ECC Root CA - G3, emSign Root CA - C1
and emSign ECC Root CA - C3 on 2026-10-20, but certdata.txt on the Firefox
release branch, which `mix certdata` reads, still has them.

The bundle is generated with mk-ca-bundle.pl 1.35 from certdata.txt on the
NSS master branch. It has the same 118 certificates as castore 1.0.22
(elixir-mint/castore#90) and curl's cacert.pem from
2026-10-20. With it all twelve test hosts fail with unknown_ca.

The bundle on main was last updated for v2.5.1, so this also brings in the
root store changes that v2.5.2 shipped from the v2.5 branch.

* Generate the CA bundle from NSS master in mix certdata

Mozilla's root store changes land in NSS first and reach certdata.txt on
the Firefox release branch, which mk-ca-bundle.pl reads by default, about
a release cycle later. Firefox release still has the three emSign roots
NSS removed on 2026-10-20, so running mix certdata added them back. castore
made the same change in elixir-mint/castore#90.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Remove compromised eMudhra root

1 participant