blob: 6b5c4791dcd7ad8429ec8f5d4c5abf3bd42fa2c2 [file] [log] [blame] [view]
# Frequently Asked Questions
Last updated: May 8, 2025
[TOC]
## General Questions
### What is the Chrome Root Store?
Chrome uses
[digital certificates](https://en.wikipedia.org/wiki/Public_key_certificate)
(often referred to as "certificates," "HTTPS certificates," or "server
authentication certificates") to ensure the connections it makes on behalf
of its users are secure and private. Certificates bind a domain name to a
public key, which Chrome uses to encrypt data sent to and from the
corresponding website.
As part of establishing a secure connection to a website, Chrome verifies
that a recognized system known as a "Certification Authority" (CA) issued
its certificate. Certificates issued by a CA not recognized by Chrome or a
user's local settings can cause users to see warnings and error pages.
Root stores, sometimes called "trust stores," tell operating systems and
applications what certificates to trust.
The
[Chrome Root Store](https://g.co/chrome/root-store) contains the set of
certificates Chrome trusts by default.
### What is the Chrome Certificate Verifier?
Historically, Chrome integrated certificate verification processes with
the platform it ran on. This resulted in inconsistent user experiences
across platforms, making it difficult for developers to understand
Chrome's expected behavior.
The launch of the Chrome Certificate Verifier addressed these concerns by
applying a common certificate verification process across Windows, macOS,
Chrome OS, Linux, and Android.
**Note:** Apple policies prevent the Chrome Certificate Verifier and
corresponding Chrome Root Store from being used on Chrome for iOS.
### When did these features land?
The Chrome Root Store and Chrome Certificate Verifier were rolled out to
Chrome users as described below.
| Chrome on...\* | Rollout Began\*\* | Enabled by Default |
| --------------- | ------------------------------------ | ------------------------------------ |
| Android | Chrome 114 | Chrome 115 |
| Chrome OS | Chrome 114 | Chrome 114 |
| iOS\*\*\* | N/A | N/A |
| Linux | Chrome 114 | Chrome 114 |
| macOS | Chrome 105 | Chrome 108 |
| Windows | Chrome 105 | Chrome 108 |
**Notes:**<br>
(\*) Find Chrome browser system requirements [here.](https://support.google.com/chrome/a/answer/7100626)
(\*\*) During this release, users also had the opportunity to "opt-in" to
these features, regardless of whether they were automatically enrolled in
the rollout population.
(\*\*\*) Apple policies prevent the Chrome Root Store and Chrome
Certificate Verifier from being used on Chrome for iOS.
### How do these features impact "enterprise", "private", or "only-locally trusted" certificates?
Depending on the underlying [connection protocol](#how-does-the-chrome-certificate-verifier-consider-local-trust-decisions)
used, the Chrome Certificate Verifier considers locally-managed certificates
during the certificate verification process.
### How can I apply for my CA's inclusion in the Chrome Root Store?
CA Owners who meet the Chrome Root Program
[policy](https://g.co/chrome/root-policy) requirements may apply for a CA
certificate's inclusion in the Chrome Root Store. CAs included in the
Chrome Root Store are expected to adhere to the Chrome Root Program policy
and continue to operate in a consistent and trustworthy manner. A CA
owner's failure to follow the requirements defined in the Chrome Root
Program policy may result in a CA certificate's removal from the Chrome
Root Store, limitations on Chrome's acceptance of the certificates they
issue, or other technical or policy restrictions.
## Support and Troubleshooting
### Where can I report an issue?
If you believe the Chrome Certificate Verifier is not working as intended,
submit a [bug](https://bugs.chromium.org/p/chromium/issues/entry) and
attach a
[NetLog dump](https://www.chromium.org/for-testers/providing-network-details/)
repeating the steps leading to the issue from a new Incognito window. Add
a comment to route the bug to the Internals>Network>Certificate component
for the fastest delivery to the appropriate triage team.
If you believe you've identified a Security Bug, follow
[these](https://www.chromium.org/Home/chromium-security/reporting-security-bugs/)
instructions.
## Additional Information for Administrators, Engineers, and Power Users
### How is the Chrome Root Store updated?
Chrome uses a "[component updater](https://chromium.googlesource.com/chromium/src/+/lkgr/components/component_updater/README.md)"
tool to push specific updates to browser components without updating the
Chrome browser application. As root CA certificates are added or removed
from the Chrome Root Store, or otherwise modified by the Chrome Root
Store, the component updater will automatically propagate these changes to
user endpoints without user action.
If your enterprise has [disabled](https://chromeenterprise.google/policies/?policy=ComponentUpdatesEnabled)
component updates, endpoints will only receive updated versions of the
Chrome Root Store during Chrome browser application updates.
During routine operating conditions, the Chrome Root Store is updated
approximately quarterly. However, aperiodic updates may take place to
promote the safety and privacy of Chrome's users.
### What happens when a certificate is added to or removed from the Chrome Root Store?
Google Chrome includes or removes self-signed root CA certificates in the Chrome
Root Store as it deems appropriate at its sole discretion.
New binary releases of Chrome include the current version of the Chrome Root
Store. If there is a change to the Chrome Root Store, future binary releases of
Chrome will automatically include that change.
Existing versions of Chrome [relying](#when-did-these-features-land) on the
Chrome Root Store and capable of [receiving component updates](#how-is-the-chrome-root-store-updated)
typically receive updated versions of the Chrome Root Store within 24-hours of
the component's release. Upon receiving the updated component, Chrome will rely
on the contents of the updated root store.
Existing versions of Chrome *not* relying on the Chrome Root Store and/or that
have disabled component updates will *not* become aware of the change(s) until
installing a binary update following the publication of the updated root store.
### How does the Chrome Certificate Verifier consider local trust decisions?
For TLS connections relying on the Transmission Control Protocol (TCP), the
Chrome Certificate Verifier considers local trust decisions for both adding and
removing trust. Learn more [here](#how-does-the-chrome-certificate-verifier-integrate-with-platform-trust-stores-for-local-trust-decisions).
For TLS connections relying on the Quick UDP Internet Connections (QUIC)
protocol, the Chrome Certificate Verifier *only* considers local trust decisions
for removing trust.
### How does the Chrome Certificate Verifier integrate with platform trust stores for local trust decisions?
On **Windows**, the Chrome Certificate Verifier automatically consumes
certificates **added** to the following certificate stores:
- Local Machine (*accessed via certlm.msc*)
- Trust:
- Trusted Root Certification Authorities
- Trusted People
- Enterprise Trust -> Enterprise -> Trusted Root Certification Authorities
- Enterprise Trust -> Enterprise -> Trusted People
- Enterprise Trust -> Group Policy -> Trusted Root Certification Authorities
- Enterprise Trust -> Group Policy -> Trusted People
- Distrust:
- Untrusted Certificates
- Enterprise Trust -> Enterprise -> Untrusted Certificates
- Enterprise Trust -> Group Policy -> Untrusted Certificates
- Current User (*accessed via certmgr.msc*)
- Trust:
- Trusted Root Certification Authorities
- Enterprise Trust -> Group Policy -> Trusted Root Certification Authorities
- Distrust:
- Untrusted Certificates
- Enterprise Trust -> Group Policy -> Untrusted Certificates
On **macOS**, the Chrome Certificate Verifier automatically consumes
certificates **added** to the following certificate stores:
- Default and System Keychains
- Trust:
- Any certificate where the "When using this certificate" flag is
set to "Always Trust" or
- Any certificate where the "Secure Sockets Layer (SSL)" flag is
set to "Always Trust."
- Distrust:
- Any certificate where the "When using this certificate" flag is
set to "Never Trust" or
- Any certificate where the "Secure Sockets Layer (SSL)" flag is
set to "Never Trust."
**Note:** The Chrome Certificate Verifier **does not** rely on the
contents of the default trust store shipped by the platform provider.
When viewing the contents of a platform trust store, it's important to
remember there's a difference between an enterprise or user explicitly
distributing trust for a certificate and inheriting that trust from the
default platform root store. For example, on Windows, viewing the
```Trusted Root Certification Authorities``` trust store may present a
specific CA certificate as trusted, but that certificate's trust is
inherited from the Windows Certificate Trust List, observed by viewing
the ```Trusted Root Certification Authorities\Third-Party``` trust store,
rather than explicitly being distributed as trusted by an enterprise or
user (observed in either of the ```Trusted Root Certification
Authorities\Registry```, ```Trusted Root Certification Authorities\Group
Policy```, or ```Trusted Root Certification Authorities\Enterprise```
trust stores).
### Can I use the Chrome Root Store for my application's trust needs?
The Chrome Root Store is optimized specifically for public TLS server
authentication in scenarios that align with the security and
[policy](https://googlechrome.github.io/chromerootprogram/) requirements of the
Chrome web browser when establishing secure connections to websites. Its design
and the Certification Authorities (CAs) included are curated to meet these
particular user needs, risk profiles, and security objectives.
While the contents of the Chrome Root Store are publicly available, applications
with different use cases, risk profiles, or security objectives, such as
authenticating client certificates, verifying email signatures, or validating
the authenticity of signed code, may find that the Chrome Root Store isn't an
ideal fit. Relying parties should carefully consider if their specific needs and
risk tolerance mirror those of Chrome users browsing the web. For use cases
beyond securing HTTPS connections, or where a different risk assessment is
appropriate, exploring or establishing a more tailored trust solution might be
more beneficial.
### What's the Chrome Certificate Manager?
The Chrome Certificate Manager unifies certificate management across the Chrome
platforms [relying](#when-did-these-features-land) on the Chrome Root Store,
offering a simple and common interface for modifying trust (e.g., adding
certificates, constraining certificates, or removing certificates).
It can be accessed by navigating to ```chrome://certificate-manager``` on Chrome
134 and up.
### Are there enterprise policies available to modify default certificate trust?
Yes.
Chrome's certificate management policies are described [here](https://chromeenterprise.google/policies/#CertificateManagement).
### How does Chrome support client authentication use cases?
Chrome integrates with platform certificate stores to support the use of client
authentication certificates.
Besides ensuring they are well-formed, Chrome passes client authentication
certificates to relying servers, which then evaluate and enforce their chosen
policy.
### Does Chrome rely on the client authentication EKU when establishing secure connections to websites?
No, Chrome does **not** depend on the id-kp-clientAuth Extended Key Usage (EKU)
contained in server certificates when establishing secure connections to
websites.
Beginning [June 15, 2026](https://googlechrome.github.io/chromerootprogram/#322-pki-hierarchies-included-in-the-chrome-root-store),
PKI hierarchies represented by a root CA certificate included in the Chrome Root
Store are expected to only issue TLS server authentication certificates that
contain *only* the id-kp-serverAuth EKU. This expectation does not apply to
hierarchies whose corresponding root is not included in the Chrome Root Store
(i.e., "enterprise", "private", or "only-locally trusted" PKI hierarchies).
### How can I tell which certificates are trusted by the Chrome Root Store?
The most recent version of the Chrome Root Store is available
[here](https://chromium.googlesource.com/chromium/src/+/main/net/data/ssl/chrome_root_store/root_store.md).
The Chrome Root Store is updated by Component Updater. To observe the
contents of the Chrome Root Store in use by a version of Chrome:
1. Navigate to ```chrome://system```
2. Click the ```Expand...``` button next to `chrome_root_store`
3. *The contents of the Chrome Root Store will display*
### What does it mean for a certificate in the Chrome Root Store to be constrained?
Chrome maintains a variety of mechanisms to protect its users from certificates
that put their safety and privacy at risk. One way this is accomplished is
through the use of metadata-based constraints added to CA certificates included
in the Chrome Root Store.
The set of constraints that may be applied to a CA certificate included in the
Chrome Root Store is described [here](/net/cert/root_store.proto).
To understand a constraint applied to a root included in the Chrome Root Store,
view the certificate's entry in [root_store.textproto](/net/data/ssl/chrome_root_store/root_store.textproto).
### What criteria does the Chrome Certificate Verifier use to evaluate certificates?
The Chrome Certificate Verifier applies standard processing to include
checking:
- the certificate's key usage and extended key usage are consistent with
TLS use cases.
- the certificate validity period is not in the past or future.
- key sizes and algorithms are of known and acceptable quality.
- whether mismatched or unknown signature algorithms are included.
- that the certificate does not chain to or through a blocked CA.
- conformance with [RFC 5280](https://datatracker.ietf.org/doc/html/rfc5280).
Chrome applies additional processing rules for certificates chaining to
roots included in the Chrome Root Store, such as:
- Certificate Transparency enforcement, and
- maximum certificate validity enforcement as required by the CA/B Forum
Baseline Requirements (i.e., 398 days or less).
### What criteria does the Chrome Certificate Verifier use to build certificate paths?
The Chrome Certificate Verifier was designed to follow path-building
guidance established in [RFC 4158](https://datatracker.ietf.org/doc/html/rfc4158).
### Where is the Chrome Root Store source code located?
Source locations include
[//net/data/ssl/chrome_root_store](/net/data/ssl/chrome_root_store),
[//net/cert](/net/cert), [//services/cert_verifier](/services/cert_verifier),
and [//chrome/browser/component_updater/](/chrome/browser/component_updater/).
### Where is the Chrome Certificate Verifier source code located?
Source locations include [//net/cert](/net/cert),
[//net/cert/internal](/net/cert/internal), and [//third_party/boringssl/src/pki/](https://boringssl.googlesource.com/boringssl/+/refs/heads/main/pki/).