CA/Subordinate CA Checklist: Difference between revisions

→‎Non-disclosable Intermediate Certificates: Added clarification that other root store policies and CCADB may require disclosure.
mNo edit summary
(→‎Non-disclosable Intermediate Certificates: Added clarification that other root store policies and CCADB may require disclosure.)
 
(48 intermediate revisions by 2 users not shown)
Line 1: Line 1:
In considering a root CA for inclusion, Mozilla must also evaluate the current subordinate CAs and the selection/approval criteria for future subordinate CAs. This wiki page outlines the information that needs to be provided by the root CA, and evaluated by the Mozilla community.
= Subordinate CA Checklist =
In considering a root certificate for inclusion in NSS, Mozilla must also evaluate the current subordinate CAs and the selection/approval criteria for future subordinate CAs. This wiki page outlines subordinate CA information that needs to be provided by the root CA organization, and evaluated by the Mozilla community.


In the situation where the root CA functions as a super CA such that their CA policies don't apply to the subordinate CAs (including auditing), then the root CA should not be considered for inclusion. Rather, the subordinate CAs may apply for inclusion themselves, as separate trust anchors.  
[https://www.mozilla.org/en-US/about/governance/policies/security-group/certs/policy#53-intermediate-certificates Mozilla’s Root Store Policy] encourages CAs to technically constrain subordinate CA certificates using RFC 5280 extensions that are specified directly in the intermediate certificate and controlled by crypto code (e.g. NSS). We recognize that technically constraining subordinate CA certificates in this manner may not be practical in some cases, so the subordinate CA certificates may instead be publicly disclosed, and audited in accordance with Mozilla’s Root Store Policy.
 
== Super-CAs ==
 
Some CAs sign the certificates of subordinate CAs to show that they have been accredited or licensed by the signing CA.  Such signing CAs are called Super-CAs, and their (first-level) subordinate CAs must apply for inclusion of their own certificates until the following has been established and demonstrated:
* The Super-CA’s documented policies and audit criteria meet the requirements of [https://www.mozilla.org/en-US/about/governance/policies/security-group/certs/policy#3-documentation Mozilla’s Root Store Policy], which includes the [https://cabforum.org/baseline-requirements/ CA/Browser Forum’s Baseline Requirements], and includes sufficient information about verification practices and issuance of end-entity certificates.
* The Super-CA is at all times completely accountable for their subordinate CAs, and the Super-CA ensures that all subordinate CAs demonstrably adhere to the Super-CA’s documented policies and audit criteria.
* The Super-CA provides publicly verifiable documentation and proof of annual audits for each subordinate CA that attest to compliance with the Super-CA’s documented policies and audit criteria.
* The subordinate CAs do not themselves act as a Super-CA or sign a large number of [[CA:SubordinateCA_checklist#Terminology | public third-party subordinate CAs]], making it difficult for Mozilla and others to annually confirm that the full CA hierarchy is in compliance with [https://www.mozilla.org/en-US/about/governance/policies/security-group/certs/policy/ Mozilla’s Root Store Policy].


== Terminology ==
== Terminology ==
Line 8: Line 17:
'''In-House:''' The subordinate CA is operated by the same organization operating the root CA.
'''In-House:''' The subordinate CA is operated by the same organization operating the root CA.


'''Third-Party:''' The subordinate CA is operated by a third party external to the root CA organization.
'''Third-Party:''' The subordinate CA is operated by a third party external to the root CA organization; and/or an external third party may directly cause the issuance of a certificate within the CA hierarchy.


'''Private:''' The subordinate CA issues certificates to entities affiliated with the sub-CA organization.  
'''Private:''' The subordinate CA issues certificates only to entities affiliated with the sub-CA organization.  


'''Public:''' The subordinate CA issues certificates to entities not affiliated with the sub-CA organization.
'''Public:''' The subordinate CA issues certificates to entities not affiliated with the sub-CA organization.


Root certificate authorities should use a separate and distinct root to sign third-party private subordinate CAs, and such roots should not be submitted for inclusion in NSS. Then if the owner of the subordinate CA later decides to create a profit center and start signing site certificates of unaffiliated entities, those site certificates will not chain back up to a root in NSS.  With a separate and distinct root not submitted for inclusion in NSS, there would be no need to disclose any information about those third-party private subordinate CAs.


There are four possible combinations:
# '''In-house public subordinate CAs:''' This is the case where a commercial CA establishes one or more internally-operated subordinates to offer certificates of a particular type (e.g., EV vs. non-EV certificates, or SSL certificates vs. email certificates) to the general public.
#* For this case, the standard [[CA:How_to_apply | root inclusion process]] applies, and it will be verified that the sub-CAs are sufficiently covered by the CP/CPS and audits.
# '''In-house private subordinate CAs:''' This case would cover CA organizations that establish subordinate CAs for internal testing or other internal purposes.
#* For this case, the standard [[CA:How_to_apply | root inclusion process]] applies, and it will be verified that the sub-CAs are sufficiently covered by the CP/CPS and audits.
# '''Third-party public subordinate CAs:''' In this case the root signs subordinate CAs for organizations who operate the sub-CA to sign certificates for other entities not affiliated with their organization. One example is a commercial CA which establishes one or more subordinate CAs to be operated by third-party organizations acting as Certificate Service Providers (CSP). Another example is a government-sponsored root CA where the organization running the root CA delegates to other organizations the task of issuing end entity certificates to the general public. For example, there might be a separate organization authorized to issue certificates for general business purposes, another organization issuing certificates specifically within a vertical industry sector like financial services, a third organization to issue certificates to individuals, and so on.
#* A typical Mozilla user is likely to encounter certificates issued by these third parties in the course of typical activities like web browsing. Hence we need assurances that these third parties are required to follow practices that satisfy the [http://www.mozilla.org/projects/security/certs/policy/ Mozilla CA Certificate Policy,] and we need to ensure that these third parties are under an acceptable audit regime.
#* The root CA is required to disclose the identity of these third parties, because they are essentially functioning as public CAs.
#* Please see the [[CA:SubordinateCA_checklist#Third-Party_Public_Subordinate_CAs|section below]]  which outlines the additional information that must be provided for third-party public subordinate CAs.
# '''Third-party private (or enterprise) subordinate CAs:''' This is the case where a commercial CA has enterprise customers who want to operate their own CAs for internal purposes, e.g., to issue SSL server certificates to systems running intranet applications, to issue individual SSL client certificates for employees or contractors for use in authenticating to such applications, and so on.
#* These sub-CAs are not functioning as public CAs, so typical Mozilla users would not encounter certificates issued by these sub-CAs in their normal activities.
#* For these sub-CAs we need assurance that they are not going to start functioning as public CAs. Currently the only assurances available for this case it to ensure that these third parties are required to follow practices that satisfy the [http://www.mozilla.org/projects/security/certs/policy/ Mozilla CA Certificate Policy,] and that these third parties are under an acceptable audit regime.
#** Note: Mozilla is investigating ways to programmatically ensure that these types of sub-CAs are only able to issue certificates within their domain.
#* Please see the [[CA:SubordinateCA_checklist#Third-Party_Private_(or_Enterprise)_Subordinate_CAs|section below]] which outlines the additional information that must be provided for third-party private (or enterprise) subordinate CAs.


== Third-Party Private (or Enterprise) Subordinate CAs ==
== CA Policies about Third-Party Subordinate CAs ==


When your root signs subordinate CAs for enterprises/companies who operate the sub-CA for their own use, the following information needs to be provided and publicly available.
If a CA's policies allow the CA to have subordinate CAs that are operated by third parties, then the following information must be provided.


# General description of the sub-CAs operated by third parties.
# General description of the sub-CAs operated by third parties.
Line 41: Line 37:
# The CP/CPS that the sub-CAs are required to follow.
# The CP/CPS that the sub-CAs are required to follow.
# Requirements (technical and contractual) for sub-CAs in regards to whether or not sub-CAs are constrained to issue certificates only within certain domains, and whether or not sub-CAs can create their own subordinates.
# Requirements (technical and contractual) for sub-CAs in regards to whether or not sub-CAs are constrained to issue certificates only within certain domains, and whether or not sub-CAs can create their own subordinates.
# Requirements (typically in the CP or CPS) for sub-CAs to take reasonable measures to verify the ownership of the domain name and email address for end-entity certificates chaining up to the root, as per section 7 of our [http://www.mozilla.org/projects/security/certs/policy/ Mozilla CA certificate policy.]
#* Section 5.3 of [https://www.mozilla.org/en-US/about/governance/policies/security-group/certs/policy#53-intermediate-certificates Mozilla's Root Store Policy]
#* The CA/Browser Forum's [https://cabforum.org/baseline-requirements-documents/ Baseline Requirements]
# Requirements (documented in the CP or CPS) for sub-CAs to take required and reasonable measures to verify the ownership of the domain name and email address for end-entity certificates chaining up to the root.
#* domain ownership/control
#* domain ownership/control
#* email address ownership/control  
#* email address ownership/control
#* digitally signing code objects -- entity submitting the certificate signing request is the same entity referenced in the certificate
# Description of audit requirements for sub-CAs (needs to be documented in the CP or CPS)
# Description of audit requirements for sub-CAs (typically in the CP or CPS)
#*Whether or not the root CA audit includes the sub-CAs.
#*Whether or not the root CA audit includes the sub-CAs.
#*Who can perform the audits for sub-CAs.
#*Who can perform the audits for sub-CAs.
#*Frequency of the audits for sub-CAs.
#*Frequency of the audits for sub-CAs.


== Third-Party Public Subordinate CAs ==
== Third-Party Subordinate CAs that are not Technically Constrained ==


This section applies when your root signs subordinate CAs for companies who use the sub-CA to sign other sub-CAs or certificates for other companies or individuals not affiliated with their company. For instance, this section applies to you if your root issues sub-CAs that are used by Certificate Service Providers (CSP).
All certificates that are capable of being used to issue new certificates, that are not technically constrained as described in section 5.3 of [https://www.mozilla.org/en-US/about/governance/policies/security-group/certs/policy#53-intermediate-certificates Mozilla's Root Store Policy], and that directly or transitively chain to a certificate included in Mozilla's CA Certificate Program MUST be audited in accordance with [https://www.mozilla.org/en-US/about/governance/policies/security-group/certs/policy#3-documentation Mozilla's Root Store Policy] and MUST be publicly disclosed by the CA that has their certificate included in Mozilla's CA Certificate Program.  


In addition to the information listed above, you will also need to provide the following information for each CSP.
In addition to the information listed above, the CA must provide the following information for each third-party subordinate CA certificate that is not technically constrained.


# Sub-CA Company Name
# Sub-CA Company Name
# Sub-CA Corporate URL
# Sub-CA Corporate URL
# Sub-CA cert download URL
# Sub-CA cert download URL
# URL to a test website whose SSL certificate chains up to this Sub-CA's certificate (if this Sub-CA is allowed to issue SSL certificates)
# General CA hierarchy under the sub-CA.
# General CA hierarchy under the sub-CA.
# Sub-CA CP/CPS Links
# Sub-CA CP/CPS Links
# The section numbers and text (in English) in the CP/CPS that demonstrate that reasonable measures are taken to verify the ownership of the domain name and email address for end-entity certificates chaining up to the root, as per section 7 of our [http://www.mozilla.org/projects/security/certs/policy/ Mozilla CA certificate policy].
# The section numbers and text (in English) in the CP/CPS that demonstrate that required and reasonable measures are taken to verify the ownership of the domain name and email address for end-entity certificates chaining up to the root.
#* domain ownership/control
#* domain ownership/control
#* email address ownership/control  
#* email address ownership/control  
#* digitally signing code objects -- entity submitting the certificate signing request is the same entity referenced in the certificate
# Identify if the SSL certificates chaining up to the sub-CA are DV, OV, and/or EV.  
# Identify if the SSL certificates chaining up to the sub-CA are DV and/or OV. Some of the potentially problematic practices, only apply to DV certificates.  
#* DV: Organization attribute is not verified. Only the Domain Name referenced in the certificate is verified to be owned/controlled by the subscriber.  
#* DV: Organization attribute is not verified. Only the Domain Name referenced in the certificate is verified to be owned/controlled by the subscriber.  
#* OV: Both the Organization and the ownership/control of the Domain Name are verified.  
#* OV: Both the Organization and the ownership/control of the Domain Name are verified.  
#* EV: Extended validation was performed on the legal entity and its operational existence.
# Review the CP/CPS for [http://wiki.mozilla.org/CA:Problematic_Practices Potentially Problematic Practices.] Provide further info when a potentially problematic practice is found.
# Review the CP/CPS for [http://wiki.mozilla.org/CA:Problematic_Practices Potentially Problematic Practices.] Provide further info when a potentially problematic practice is found.
# If the root CA audit does not include this sub-CA, then for this sub-CA provide a publishable statement or letter from an auditor that meets the requirements of sections 8, 9, and 10 of our [http://www.mozilla.org/projects/security/certs/policy/ Mozilla CA certificate policy.]
# If the root CA audits do not include this sub-CA, then for this sub-CA provide a publishable statement or letter from an auditor that meets the requirements of [https://www.mozilla.org/en-US/about/governance/policies/security-group/certs/policy#3-documentation Mozilla's Root Store Policy.]
# Provide information about the CRL update frequency for end-entity certificates. There should be a statement in the CP/CPS that the sub-CA must follow to the effect that the CRL for end-entity certs is updated whenever a cert is revoked, and at least every 24 or 36 hours.
 
# If this sub-CA provides OCSP, then a test must be done to make sure that their OCSP responder works within the Firefox browser. Provide the url to a website whose SSL cert chains up to this sub-CA and has the AIA extension referencing the OCSP responder. The Mozilla representative will perform the following check:
== Non-disclosable Intermediate Certificates ==
#* Enforce OCSP in Firefox: Tools->Options…->Advanced->Encryption->Validation
In order to best ensure the safety and security of Mozilla users, Mozilla has a single consistent [https://www.mozilla.org/en-US/about/governance/policies/security-group/certs/policy policy] that describes the expectations for all CAs that will be trusted within its program. Mozilla requires that all participating root CAs fully disclose their hierarchy, including CP, CPS, and audits, when said hierarchy is capable of issuance.
#* Select the box for “When an OCSP server connection fails, treat the certificate as invalid”
 
#* Browse to the given url. Ensure that the website loads without error into Firefox, and that it's SSL cert chains up to the sub-CA and references the OCSP responder in the AIA extension.
If you have intermediate certificates for which you cannot disclose this information, whether it be for personal, operational, or legal reasons, then an appropriate solution, consistent with [https://www.mozilla.org/en-US/about/governance/policies/security-group/certs/policy#53-intermediate-certificates Mozilla Root Store Policy], is to use Technically Constrained Subordinate CAs (TCSCAs) - as defined within the CA/Browser Forum's Baseline Requirements and as reflected within Mozilla's policy. Such TCSCAs are technically limited from the issuance of TLS server or email certificates. For example, if these subCAs are not used for the production of TLS/SSL or email certificates, then you can make use of the Extended Key Usage extension on the sub-CA to ensure it is present, and that it *lacks* the id-kp-serverAuth, id-kp-emailProtection, and anyExtendedKeyUsage extensions. (CAVEAT: Public disclosure in the CCADB might still be required by other root store programs. See [https://www.ccadb.org/policy#4-intermediate-certificates Section 4 of the CCADB Policy].)
 
Alternatively, you can consider restructuring a CA hierarchy such that you have
 
:::/-Private Sub CA 1
::/--Private Sub CA 2
:Root
::\
:::\-BR-compliant Public Intermediate {This is the cert you would request Mozilla include as a Trust Anchor.}
::::\
:::::\----BR-compliant SubCA1
::::::\---BR-compliant SubCA2
:::::::\--BR-compliant SubCA3
 
That is, in this structure, an additional intermediate is inserted into your PKI which distinguishes the "private" (confidential) sub-CAs, and the publicly audited, publicly disclosed set of sub-CAs. In this scenario, rather than all chaining directly to the Root, they transit a newly introduced intermediate. It is this newly introduced intermediate that you would 'apply' for inclusion to Mozilla as the root, even if operationally, your government might use and rely on "Root" for the broader purpose of digital signature identification or operational management.
 
The point of this is that Mozilla Policy requires that all nodes signed by the trust anchor (using the RFC5280 terminology, since it doesn't need to be a self-signed cert), whether it's 'root' or 'BR-compliant Public Intermediate', MUST be operated and disclosed in a way consistent with Mozilla Policy. If you have a 'private' PKI (even if it's publicly operated for the benefit of citizens and/or customers), then it MUST be a sibling-or-parent node in the PKI tree, and MUST NOT be a child node.
Confirmed users
377

edits