Skip to content

Update the root store from Chromium (remove emSign ECC Root CA - G3) - #46

Merged
Algunenano merged 2 commits into
ClickHouse/1.83.0from
update-roots-from-chromium
Oct 22, 2026
Merged

Algunenano merged 2 commits into
ClickHouse/1.83.0from
update-roots-from-chromium

Conversation

@alexey-milovidov

Copy link
Copy Markdown
Member

Update etc/roots.pem from upstream gRPC (grpc/grpc#43699), which regenerated it from the Chromium root store in response to the eMudhra incident.

The private keys of eight eMudhra intermediate CAs issued in 2025 can be recovered from their certificates. They are issued by emSign Root TLS CA - G3 (cross-signed by emSign ECC Root CA - G3) and cross-signed by Sectigo AAA Certificate Services. This removes emSign ECC Root CA - G3, the only affected root in the bundle, and follows the other recent changes of the Chromium root store (19 roots removed, 3 added). emSign Root CA - G1 is unaffected and is kept, as in upstream gRPC and certifi.

Note: in ClickHouse, this bundle is not used in typical scenarios. ClickHouse embeds it into the binary only as a fallback for when no CA certificates can be found on the filesystem, e.g. in a container built "from scratch". Whenever the operating system provides a trust store (or a caConfig is set), the bundle is ignored, and the operating system's trust store is used instead. Distrusting the compromised certificates regardless of the trust store in use is done separately in ClickHouse itself.

The first commit removes only emSign ECC Root CA - G3; the second one makes the file identical to upstream.

Related: https://emudhra.we-have-a-problem.com/
Related: grpc/grpc#43699
Related: certifi/python-certifi#440

🤖 Generated with Claude Code

alexey-milovidov and others added 2 commits October 22, 2026 01:38
The private keys of eight eMudhra intermediate CAs issued in 2025 under
`emSign Root TLS CA - G3` (cross-signed by `emSign ECC Root CA - G3` and by
Sectigo `AAA Certificate Services`) can be recovered from their certificates.

This is the same removal as in upstream gRPC (grpc/grpc#43699),
but without resynchronizing the rest of the bundle with the Chromium root store.
`emSign Root CA - G1` is unaffected and is kept, as in upstream gRPC and certifi.

Related: https://emudhra.we-have-a-problem.com/
Related: grpc/grpc#43699
Related: certifi/python-certifi#440

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Take `etc/roots.pem` from upstream gRPC as of grpc/grpc#43699,
which regenerated it from the Chromium root store. Besides `emSign ECC Root CA - G3`
(removed in the previous commit), this follows the other Chromium root store changes.

Related: https://emudhra.we-have-a-problem.com/
Related: grpc/grpc#43699

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Algunenano
Algunenano merged commit 68b2fe0 into ClickHouse/1.83.0 Oct 22, 2026
1 check failed
alexey-milovidov added a commit to groeneai/ClickHouse that referenced this pull request Oct 23, 2026
The private keys of eight eMudhra intermediate CAs issued in 2025 can be recovered
from their certificates. Reject any certificate chain that contains one of them, or
one of the roots that issued or cross-signed them (`emSign Root TLS CA - G3`,
`emSign Root CS CA - G3`, `emSign ECC Root CA - G3`), regardless of the trust store
it was built from, including the trust store of the operating system. The keys are
identified by the SHA-256 of their `SubjectPublicKeyInfo`, so the cross-signed
certificates of the same keys (issued by Sectigo `AAA Certificate Services`) are
rejected as well. The check is done in `Poco::Net::SSLManager::verifyCallback`.

Also update the CA certificates embedded into the binary (`contrib/grpc/etc/roots.pem`)
from the Chromium root store, which removes `emSign ECC Root CA - G3`.

Related: https://emudhra.we-have-a-problem.com/
Related: ClickHouse/grpc#46
Related: grpc/grpc#43699

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.

2 participants