Skip to content

Stop trusting the emSign roots Mozilla removed - #1281

Merged
ericmj merged 2 commits into
mainfrom
ericmj/remove-emsign-roots
Oct 20, 2026
Merged

ericmj merged 2 commits into
mainfrom
ericmj/remove-emsign-roots

Conversation

@ericmj

@ericmj ericmj commented Oct 20, 2026 •

Copy link
Copy Markdown
Member

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 accepts them with its bundled CA store. NSS removed emSign ECC Root CA - G3 (0a2b0c7) and emSign Root CA - C1 and emSign ECC Root CA - C3 (1573410) on 2026-10-20.

mix certdata read certdata.txt from the Firefox release branch, which still has all three roots and gets NSS root store changes about a release cycle later. It now reads certdata.txt from the NSS master branch, the same change castore made in elixir-mint/castore#90, and the bundle is regenerated with it. The bundle has the same 118 certificates as castore 1.0.22 and curl's cacert.pem from 2026-10-20. Connecting with Hex.HTTP.SSL.ssl_opts/1, all twelve test hosts now fail with unknown_ca and hex.pm, repo.hex.pm and builds.hex.pm still verify.

The bundle on main was last updated for v2.5.1, so this also brings in the root store changes v2.5.2 shipped from the v2.5 branch: Atos TrustedRoot 2011, Entrust Root Certification Authority, SecureSign Root CA12 and ePKI Root Certification Authority are removed, and SECOM TLS ECC/RSA Root CA 2024 and Telia EC/RSA TLS Root CA v3 are added.

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.
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
ericmj merged commit b093fca into main Oct 20, 2026
15 checks passed
@ericmj
ericmj deleted the ericmj/remove-emsign-roots branch October 20, 2026 18:59
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.

1 participant