CA/Application Verification: Difference between revisions

From MozillaWiki
< CA
Jump to navigation Jump to search
(deleted text that was either moved elsewhere or is obsolete.)
(added step regarding Unacceptable or Concerning Behaviors)
 
(24 intermediate revisions by 3 users not shown)
Line 1: Line 1:
This page provides information about the steps a Mozilla representative will take during evaluation of a CA's root inclusion or change request.
This page provides information about the evaluation of a CA's root inclusion or change request.  See the [[CA/Application_Process|Application Process Overview]] for the list of the steps in the application process.


== Information Verification ==
= Information Verification =


In this phase someone working on behalf of Mozilla will review and verify the information that you have supplied. They will check to make sure that all of the information listed in the [[CA:Information_checklist|CA Information Checklist]] has been provided, as well as perform the following verification steps. They may ask for further information if it is needed. The duration of this phase depends on the completeness of the information provided in Bugzilla, and your responsiveness in providing further information when asked for it.
In this phase, a representative of Mozilla or another Root Store Member of the Common CA Database (CCADB) will review and confirm that the information has been provided through the [https://ccadb.org CCADB]. They will check to make sure that all required information has been provided. They may ask for further information if it is needed. The duration of this phase depends on the completeness of the information provided in CCADB, documentation uploaded to Bugzilla, and the CA's responsiveness in providing further information when asked for it.
   
   
The person working on behalf of Mozilla will do the following for each root CA certificate that you wish to have included:
The person conducting initial information verification uses the CCADB to check the completeness of information about:
# Verify the information provided in response to the [[CA:Information_checklist|information checklist]].
*the CA owner,
#* Download the root CA certificate in Firefox, and compare against the data provided.
*the CA's auditor,
#* Look for items of concern, such as:
*annual audits and auditor's key generation report(s),
#** X.509 certificate version not equal to 3.
*the CA's policy and practices documentation, and
#** For RSA public keys, modulus length of 1024 bit. (NIST recommends that all such roots be phased out by the end of 2010.)
*the root certificates themselves.
#* Download the applicable CRL(s) in Firefox to verify that they load correctly.
 
#* Check the OCSP responder URL in Firefox, if one is provided.
'''Important''': The Mozilla representative should deny the root inclusion request during Information Verification when they are aware that the applying CA operator has engaged in [[CA/Root_Inclusion_Considerations#Unacceptable_Behavior|Unacceptable Behavior]] or a collection of the [[CA/Root_Inclusion_Considerations#Concerning_Behavior|Concerning Behaviors]].
#* For SSL certificates, try the website that has been provided for testing purposes, ensure that the lock icon is displayed, and double click on the lock icon and compare the data for the root that the cert chains up to, to the data that has been provided.
<br><br>
#* For other certificates, download the test cert and check the chaining and root information.
For each root certificate under consideration, the reviewer will confirm that information has been populated in the CCADB.
# Review the CP/CPS to
 
#* Look for a statement about the frequency of update for the CRLs for end-entity certificates chaining to this root.
# For each root certificate, review:
#* Look for a statement about the maximum time until OCSP responders are updated to reflect end-entity revocation (if OCSP is enabled).
#* Explanation of purpose
#* Ensure that there is text in the CP/CPS that demonstrates that you take reasonable measures to verify the following information for end-entity certificates chaining up to this root, as per section 7 of the [http://www.mozilla.org/projects/security/certs/policy/ Mozilla CA certificate policy].
#* Root download URL
#** For a certificate to be used for SSL-enabled servers, that you take reasonable measures to verify that the entity submitting the certificate signing request has registered the domain(s) referenced in the certificate or has been authorized by the domain registrant to act on the registrant's behalf;
#* URL for full CRL (or JSON array constituting full CRL)
#** for a certificate to be used for digitally signing and/or encrypting email messages, that you take reasonable measures to verify that the entity submitting the request controls the email account associated with the email address referenced in the certificate or has been authorized by the email account holder to act on the account holder's behalf;
#* PKI Hierarchy (see below for specific items requiring Detailed Review)
#** for certificates to be used for digitally signing code objects, that you take reasonable measures to verify that the entity submitting the certificate signing request is the same entity referenced in the certificate or has been authorized by the entity referenced in the certificate to act on that entity's behalf;
#* For TLS server certificates, confirm whether the root certificate has been tested using:
#* Identify if the SSL certificates chaining up to this root are DV and/or OV. Some of the [[CA:Problematic_Practices|potentially problematic practices]], only apply to DV certificates.
#** the 3 websites (valid, expired, revoked) that have been provided to ensure that each TLS certificate chains up to the root certificate under evaluation and that the sites respond as expected
#** DV: Organization attribute is not verified. Only the Domain Name referenced in the certificate is verified to be owned/controlled by the subscriber.
#** http://certificate.revocationcheck.com/
#*** The CA must provide the list of [[CA:Problematic_Practices#Email_Address_Prefixes_for_DV_Certs|email addresses that they use for verification.]]
#** Lint Tests: e.g. https://github.com/certlint/certlint and https://github.com/kroeckx/x509lint (e.g. using https://cachecker-dot-ccadb-231121.appspot.com/)
#** OV: Both the Organization and the ownership/control of the Domain Name are verified.  
#* For the email trust bit, a Mozilla representative will download the S/MIME certificate(s) from Bugzilla and check the chaining and root information.
#* Look for [[CA:Problematic_Practices|potentially problematic practices]], and request further information whenever one of these practices is applicable.
# Review and verify that all relevant parts of the [[CA/Compliance_Self-Assessment|CA's Compliance Self-Assessment]] have been completed. The Compliance Self-Assessment is used to review the CA's policies and practices during the Detailed Review, explained below.
#* All documents supplied as evidence should be publicly available and must be addressed in any audit. Any substantial omissions submitted afterwards may need to be confirmed by auditor, at Mozilla's discretion.
# Review audit documents to make sure that requirements are met.
# Review CA hierarchy information provided for this root (preferably in the form of both a diagram and a description).
#* Make sure that there is a clear list and/or description of the internally operated subordinate CAs chaining to the root. For internally-operated subordinate CAs the key is to confirm that their operation is addressed by the relevant CP/CPS, and that any audit covers them as well as the root.
#* Make sure there is a clear list and/or description of the subordinate CAs that are operated by third parties. Make sure there is a clear general description and an explanation as to how the CP/CPS and audits ensure the third parties are in compliance with our policy requirements as per the [https://wiki.mozilla.org/CA:SubordinateCA_checklist Subordinate CA Checklist.]
#** Verify that contractual arrangements require third-party subordinates to operate in accordance with a CP/CPS.  
#** Investigate applicable technical arrangements on subordinate CAs, including name constraints, not allowing subordinates to create their own subordinates, etc.
#** Determine the extent and nature of audits performed against subordinate CAs, including whether or not subordinate CAs are included within the scope of any audit(s) done against the root CA, whether or not subordinate CAs are subject to third-party audits independent of any audit(s) done against the root CA, and whether or not you perform your own audits of subordinate CAs.
#** Determine the frequency at which any audit(s) for subordinate CAs are done.
#* Determine any other root CAs that have issued cross-signing certificates for this root CA.
# Review audit documents to make sure that the requirements are met in regards to sections 11 through 14 of [http://www.mozilla.org/en-US/about/governance/policies/security-group/certs/policy/inclusion/ Mozilla's CA Certificate Inclusion Policy].
#* Make sure the audit isn’t more than a year old.
#* Make sure the audit isn’t more than a year old.
#* Confirm that there is a URL link to an auditor's report for the root key generation event.
#* Determine the frequency at which any audit(s) for subordinate CAs are done.
#* Verify that the audit was performed by an independent third party.
#* Verify that the audit was performed by an independent third party.
#* Verify that the audit covers the practices and requirements of ETSI TS 101 456 (only acceptable for non-SSL), ETSI TS 102 042, or WebTrust Principles and Criteria for Certification Authorities.
#* Verify that the audit covers the practices and requirements for the trust bits requested.
#* Review the audit report to flag any issues noted in the report.
#* Review the audit report to flag any issues noted in the report.
#* Do an independent verification of the audit when the report is provided by or posted by the submitter, rather than being posted on a third-party site such as webtrust.org.
#* Do an independent verification of the audit when the report is provided by or posted by the submitter, rather than being posted on the auditor's site or the CPA Canada Webtrust site.
#** Look on the internet to verify that the auditor meets the policy requirements, and to find contact information for the auditor.
#** Look on the internet to verify that the auditor meets the policy requirements, and to find contact information for the auditor.
#** Using the contact information found on the internet, send an inquiry to the auditor to ask them to verify that the audit provided was indeed issued by them, and that the contents match the audit report that they issued.
#** Using the contact information found on the internet, verify the authenticity of the report by inquiring with the auditor whether the report was issued by them and that the contents match the audit report that they issued.
# For requests to enable a root so that EV certificates may be issued under that root:
 
#* Verify the EV policy OID(s).
A Mozilla representative will check for completeness of any additional, Mozilla-specific requirements.
#* Make sure the CP/CPS incorporate (directly or by referenced) the EV Guidelines as published by the CAB Forum.
#* Make sure there has been audits within the past year for both EV and non-EV SSL certificate issuance that meet the requirements of [http://www.mozilla.org/en-US/about/governance/policies/security-group/certs/policy/inclusion/ Mozilla's CA Certificate Inclusion Policy].
#* If any of the subordinate CAs that are operated by third-parties are or will be EV enabled, refer to [http://www.cabforum.org/EV_Certificate_Guidelines_V11.pdf EV guidelines] section 7.b.1 and section 37b. Also, provide audit requirements for these third-parties.


Once all of this data has been verified, the Mozilla representative will update the whiteboard section in the bug and the status of the corresponding entry in the [http://www.mozilla.org/projects/security/certs/pending/ pending CA request list] will be updated to “Information confirmed complete”. The request will be prioritized and added to the [[CA:Schedule|Queue for Public Discussion]]. The bug will be updated when the request enters into the first public discussion.
Once all this data has been verified, Mozilla or a CCADB representative will update the whiteboard section in the bug to indicate that the request is ready for [[CA/Application_Verification#Detailed_Review|detailed review]] of the CA's documentation and public discussion.


=== Public discussion ===
= Detailed Review =
The detailed review phase occurs simultaneously with the public discussion phase. A representative of Mozilla, a Root Store Member of the CCADB, or of the Community (as agreed by a Mozilla representative) [[CA/CPS_Review|thoroughly reviews]] the CA’s documents and audits, existing bugs, and other public information sources such as [https://crt.sh crt.sh]. Compliance with the Mozilla Root Store Policy, applicable CA/Browser Forum guidelines, and applicable audit criteria is assessed and deviations are noted. The findings from such reviews are summarized presented during public discussion.


The Mozilla project is a public project in which anyone may participate. We therefore include in our evaluation process a period for public comment during which interested parties may review the information you supply, ask additional questions regarding the CA, and provide their opinions on whether the request should be approved or not.
Depending on the nature of the findings, the reviewer may choose to list some or all of them in the bug or in the [https://groups.google.com/a/ccadb.org/g/public CCADB discussion] and give the CA the opportunity to address them (typically by updating documents or providing additional information).  


At present there are one or (optionally) two phases of public discussion. At the end of the first phase we will make a preliminary determination as to whether the request will be approved or not, based on the information supplied and the resolution of any new issues raised during phase 1 of public discussion. During the second phase of public discussion interested parties may make final comments, and after that phase ends we will make a final decision.
== CP/CPS Review ==
 
The CA's [[CA/Compliance_Self-Assessment| Compliance Self-Assessment]] is used to guide the detailed review of the CA's CP, CPS, or combined CP/CPS. (The Compliance Self-Assessment is a more comprehensive review than the list provided below.)
 
Review the CP and CPS or combined CP/CPS and compare them with the CA's responses in the Compliance Self-Assessment, including:
*A statement that gives precedence to applicable CA/Browser Forum requirements;
*Text that demonstrates the CA verifies all information to be included in certificates, as required by Mozilla's Root Store Policy and the CA/Browser Forum's Baseline Requirements;
*Evidence that the CA follows Mozilla's [[CA/Required_or_Recommended_Practices|required or recommended practices]];
*Instances where the CA might use [[CA/Forbidden_or_Problematic_Practices|forbidden or problematic practices]];
*A statement about the frequency of update for the CRLs for end-entity certificates chaining to the root; and
*A statement about the maximum time until OCSP responders are updated to reflect end-entity revocation (if OCSP is enabled).
 
All documents supplied as evidence must be publicly available and must be addressed in any audit. Any substantial omissions submitted afterwards may need to be confirmed by an auditor, at Mozilla's discretion.
 
== PKI Hierarchy Review ==
Review CA hierarchy information provided for each root (preferably in the form of both a diagram and a description).
#Make sure that there is a clear list and/or description of the internally operated subordinate CAs chaining to the root. For internally-operated subordinate CAs the key is to confirm that their operation is addressed by the relevant CP/CPS, and that any audit covers them as well as the root.
#Make sure there is a clear list and/or description of the subordinate CAs that are operated by third parties. Make sure there is a clear general description and an explanation as to how the CP/CPS and audits ensure the third parties are in compliance with our policy requirements as per the [https://wiki.mozilla.org/CA/Subordinate_CA_Checklist Subordinate CA Checklist.]
#* Verify that contractual arrangements require third-party subordinates to operate in accordance with a CP/CPS that meets applicable requirements.
#* Investigate applicable technical arrangements on subordinate CAs, including EKUs and name constraints, pathlength constraintes that don't allow subordinates to create their own subordinates, etc.
#* Determine the extent and nature of audits performed against subordinate CAs, including whether or not subordinate CAs are included within the scope of any audit(s) done against the root CA, whether or not subordinate CAs are subject to third-party audits independent of any audit(s) done against the root CA, and whether or not you perform your own audits of subordinate CAs.
#Determine if there are any other root CAs that have issued cross-signing certificates for this root CA.
 
== EV Enablement Review ==
For requests to enable a root so that EV certificates may be issued under that root:
#Verify the presence of the CA/Browser Forum's EV policy OID (2.23.140.1.1).
#Make sure the CP/CPS incorporate (directly or by referenced) the EV Guidelines as published by the CA/Browser Forum.
#Make sure there have been audits within the past year for both EV and non-EV TLS certificate issuance
#If any of the subordinate CAs that are operated by third-parties are or will be EV enabled, refer to the EV guidelines and make sure there are EV audit statements for them.
 
= Public Discussion =
 
Mozilla's root inclusion process occurs publicly, and anyone may participate. We therefore include in our evaluation process a six-week period for public comment during which interested parties may review the information the CA supplied, ask additional questions regarding the CA, and provide their opinions on whether the request should be approved or not.
 
For Mozilla, the public discussion process occurs in two steps. At the end of the six-week public discussion process, we will make a preliminary determination as to whether the request will be approved or not, based on the information supplied and the resolution of any new issues raised during public discussion.  
 
Following the six-week discussion period, we announce a one-week "last-call" period, during which interested parties may make final comments. And after that phase, we will make a final decision by updating the request in Bugzilla.


'''Who participates in the public discussions?'''
'''Who participates in the public discussions?'''
<br>
<br>
You! Members of the Mozilla community volunteer their time to review CA inclusion requests and provide their feedback. Participants should have knowledge of PKI, business practices, and policies. The more participants contributing to each discussion, the better the discussion will be in regards to ferreting out issues, helping the requester to improve their practices, and bringing the discussion to closure.
Members of the Mozilla community volunteer their time to review CA inclusion requests and provide their feedback. Participants should have knowledge of PKI, business practices, and policies. The more participants contributing to each discussion, the better the discussion will be in regards to ferreting out issues, helping the requester to improve their practices, and bringing the discussion to closure.


'''Note:''' If you have not contributed to a discussion before, wait no more! The more you contribute to discussions, the more you establish yourself as a knowledgeable and objective reviewer. Then when there is a request that you are particularly interested in providing feedback on, your contributions will be even more effective. Additionally, if you are a CA with a request in the queue, participating in other discussions is a great way to learn the expectations and be prepared for the discussion of your request.
'''Note:''' If you have not contributed to a discussion before, wait no more! The more you contribute to discussions, the more you establish yourself as a knowledgeable and objective reviewer. Then, when there is a request that you are particularly interested in providing feedback on, your contributions will be even more effective. Additionally, if you are a CA with a request in the queue, participating in other discussions is a great way to learn the expectations and be prepared for the discussion of your request.


'''What do reviewers look for?'''
'''What do reviewers look for?'''
<br>
<br>
Reviewers of CA inclusion requests look for anything which could be of concern to Mozilla.  
Reviewers of CA inclusion requests look for anything which could be of concern to Mozilla.  
* [[CA:Recommended_Practices#CP.2FCPS_Documents_will_be_Reviewed.21|Review the CP/CPS documents]] to determine if they are sufficiently detailed, and meet the requirements of Mozilla's CA Policy and the CA/Browser Forum's Baseline Requirements.
* [[CA/Required_or_Recommended_Practices#CP.2FCPS_Documents_will_be_Reviewed.21|Review the CP/CPS documents]] to determine if they are sufficiently detailed, and meet the requirements of Mozilla's CA Policy and the CA/Browser Forum's Baseline Requirements.
* Are all of the items listed in the [http://www.mozilla.org/projects/security/certs/policy/ Mozilla CA Certificate Policy] addressed?
* Are all items listed in the [http://www.mozilla.org/projects/security/certs/policy/ Mozilla Root Store Policy] addressed?
** In particular, are there effective controls for certificate issuance and auditing of the same, which include:  
** In particular, are there effective controls for certificate issuance and auditing of the same, which include:  
***  Verification of domain control for webserver certificates
***  Verification of domain control for webserver certificates
***  Verification of email address control for email certificates
***  Verification of email address control for email certificates
***  Identification of legal entity for software certificates
* Are the [[CA/Required_or_Recommended_Practices|Recommended Practices]] followed?
* Are the [[CA:Recommended_Practices | Recommended Practices]] followed?
* Are there any [[CA/Forbidden_or_Problematic_Practices|Problematic Practices]]?
* Are there any [[CA:Problematic_Practices | Potentially Problematic Practices]]?
* Are there previous recommendations that should be taken into consideration in this case?
* Are there previous recommendations that should be taken into consideration in this case?
* Are there any potential risks that should be investigated?
* Are there any potential risks that should be investigated?
Line 82: Line 108:
'''Where do the discussions take place?'''
'''Where do the discussions take place?'''
<br>
<br>
Public discussions about root inclusion and change requests take place in the mozilla.dev.security.policy discussion forum.
Public discussions about root inclusion and change requests take place in the [https://groups.google.com/a/ccadb.org/g/public CCADB public mailing list].
* http://www.mozilla.org/about/forums/  
** Search the page for mozilla.dev.security.policy (http://www.mozilla.org/about/forums/#dev-security-policy)
** Select your preferred way of participating in discussion forums (news reader, email, web interface)
 
It is recommended that you use a newsreader and not the web interface to Google Groups, because there have been recurring problems with messages that are posted to the discussion forum not getting propagated to Google Groups. Additionally there have been recurring problems where posts to the discussion forum via the Google Groups interface are not sent.


'''Will my input be viewed as representing my employer?'''
'''Will my input be viewed as representing my employer?'''
Line 93: Line 114:
A representative of the CA whose root inclusion request is being discussed must clearly represent their employer and must promptly respond directly in the discussion thread to all questions that are posted.
A representative of the CA whose root inclusion request is being discussed must clearly represent their employer and must promptly respond directly in the discussion thread to all questions that are posted.


All other contributors to the discussion may choose between representing their employer or not. When you post your input into the discussion, you may choose to use a non-work-related email address and/or add a note in your signature stating that the views/comments posted therein are of your opinion only, and do not represent the views/opinions of the company your work for.  On the other hand, some contributors prefer to use their work email address and provide their input as an employee representing their employer.  It’s up to you.
All other contributors to the discussion may choose between representing their employer or not. When you post your input into the discussion, you may choose to use a non-work-related email address and/or add a note in your signature stating that the views/comments posted therein are of your opinion only, and do not represent the views/opinions of the company you work for.  On the other hand, some contributors prefer to use their work email address and provide their input as an employee representing their employer.  It’s up to you.


'''How long does a discussion take?'''
'''How long does a discussion take?'''
<br>
<br>
The time that each discussion takes varies dramatically depending on the number of reviewers contributing to the discussion, and the types of concerns that are raised. If no one reviews and contributes to a discussion, then a request may sit in the discussion for weeks. If you have a request in the [[CA:Schedule#Queue_for_Public_Discussion|Queue for Public Discussion]], then you are directly impacted when there are not enough people contributing to the discussions ahead of yours.
The discussion period is six weeks long.


How can you help?  
'''How can you help?'''


You can help by reviewing and providing your feedback in each public discussion of root inclusion requests, or by asking a colleague to do so.
You can help by reviewing and providing your feedback in each public discussion of root inclusion requests, or by asking a colleague to do so.


For each discussion for a CA that is new to Mozilla's program, there must be input from at least two people who have reviewed and commented on the request.  The comment can be questions, requests for clarification, or statements about items that you find concerning with respect to how the CA follows the Mozilla CA Certificate Policy.  The comment can also be as simple as “I have reviewed this request and find nothing of concern” (if that is indeed the case).  
For each discussion for a CA that is new to Mozilla's program, there should be input from at least two people who have reviewed and commented on the request.  The comment can be questions, requests for clarification, or statements about items that you find concerning with respect to how the CA follows Mozilla's Root Store Policy.  The comment can also be as simple as “I have reviewed this request and find nothing of concern” (if that is indeed the case).  


==== Phase 1 of public discussion ====
== Discussion on Public List at CCADB.org ==


To begin this phase, a representative of Mozilla will create a new discussion thread in the [http://groups.google.com/group/mozilla.dev.security.policy mozilla.dev.security.policy] newsgroup and will post information to the associated bug that the public discussion has begun.  
To begin this phase, a representative of Mozilla or one of the other Root Store Members of the CCADB will create a new discussion thread in the [https://groups.google.com/a/ccadb.org/g/public CCADB public mailing list] and will post information to the associated bug that the public discussion has begun.  


Here is how a typical discussion proceeds:
Here is how a typical discussion proceeds:
# The Mozilla representative starts the discussion by providing a summary of the request, and a summary of the information about the CA's practices.
# A Mozilla or CCADB representative starts the discussion by providing a summary of the request, and a summary of the information about the CA's practices.
# People from the Mozilla community reply in the discussion to ask questions and comment on the request.
# People from the Community reply in the discussion to ask questions and comment on the request.
# A representative of the CA replies to the questions and comments in the discussion thread. This may result in further discussion. Others from the Mozilla community may add their opinions and ask more questions.
# A representative of the CA replies to the questions and comments in the discussion thread. This may result in further discussion. Others from the Community may add their opinions and ask more questions.
# Once the question/answer discussions have begun to reach conclusions, then a representative of the CA may propose changes to make to the CP/CPS to address the concerns. This may result in further discussion.
# Once the question/answer discussions have begun to reach conclusions, then a representative of the CA may propose changes to make to the CP/CPS to address the concerns. This may result in further discussion.
# After the discussions have resulted in a clear set of things to update in the CP/CPS and possibly operational practices, then the Mozilla representative will close the discussion and track the action items in the bug. When the CA has completed the action items, and the Mozilla representative has confirmed that the action items have been completed, the Mozilla representative may start a second round of discussion.
# After the discussions have resulted in a clear set of things to update in the CP/CPS and possibly operational practices, then the Mozilla or CCADB representative will close the discussion and track the action items in the bug. In some circumstances, the CA may have to complete action items after the six-week discussion period. Then the Mozilla representative will review and confirm whether the action items have been completed, and then the Mozilla representative may start a second round of discussion.  
 
You are expected to participate directly in this discussion, by responding to questions raised in the newsgroup and/or posting comments to the bug. The discussion is public, so please ensure that any information provided is not proprietary or confidential. The more active you are in responding to inquiries within the discussion, the more productive the discussion will be.
 
At the end of the first public discussion phase, the Mozilla representative will post a summary in the bug about the results of the discussion and the open action items. Technical concerns, information about subordinate CAs (particularly those operated by third-parties), and potentially problematic practices will be specifically stated. The resulting information will vary depending on what issues or items of note have been found.
 
If there are no open issues or action items after the first discussion period, and there is general agreement that you comply with our policy requirements, then at Mozilla's discretion the second phase of public discussion may be skipped. The Mozilla representative will post a summary and recommendation in the bug using the following template.  


https://wiki.mozilla.org/CA:Tentative_approval_template
CAs are expected to participate directly in all discussions, by responding to questions raised in the public mailing list and/or posting comments to the bug. The discussion is public, so please ensure that any information provided is not proprietary or confidential. The more active CAs are in responding to inquiries within the discussion, the more productive the discussion will be.  


Then a representative of Mozilla may approve the request by noting approval in the bug, after which, the request will move into the inclusion phase as described below.
At the end of the first public discussion phase, the Mozilla representative or representative of a CCADB Root Store Member will post a summary about the results of the discussion and any open action items. Technical concerns, information about subordinate CAs (particularly those operated by third-parties), and potentially problematic practices will be specifically stated. The resulting information will vary depending on what issues or items of note have been found.


Otherwise the Mozilla representative will list the action items that must be completed before the second phase of public discussion can begin.
If there are no open issues or action items after the first discussion period, and there is general agreement that the CA complies with our policy requirements, then the Mozilla representative will post a recommendation in the bug. The final decision on whether to include  the root certificate will be at Mozilla's discretion.


==== Response to public discussion ====
== Response to public discussion ==
If there are follow-up actions to be performed during the first public discussion phase, then the Mozilla representative may decide to postpone further public discussion until the CA addresses particular issues or provides additional information. The duration of this postponement is dependent on how long it takes to complete the action items. The CA should post updates to the action items in the bug. When the action items are completed, and verified by a Mozilla representative, the Mozilla representative may re-start public discussion.


Frequently there will be follow-up actions to be performed after the first public discussion phase, and the Mozilla representative may decide to postpone further public discussion until you address particular issues or provide additional information. The duration of this postponement is dependent on how long it takes to complete the action items. You should post updates to the action items in the bug. When the action items are completed, you should work with the Mozilla representative to get scheduled for phase 2 of public discussion.
== Last Step in Public Discussion ==


==== Phase 2 of public Discussion ====
In the final step of public discussion, a Mozilla representative will announce a final, "last call" discussion period of one week. Interested members of the general public may make final objections to Mozilla's announced intention. If there are no open issues or action items, and if there is general agreement that the CA complies with our policy requirements, then at Mozilla's discretion, a Mozilla representative will indicate in the bug whether the CA's request has been approved or denied.


This phase is very similar to the first phase of public discussion. To begin this phase, a representative of Mozilla will create a new discussion thread in the [http://groups.google.com/group/mozilla.dev.security.policy mozilla.dev.security.policy] newsgroup and will post information to the associated bug that the public discussion has begun.
= NSS and PSM Bug Creation =


Interested members of the general public may provide comments and ask questions, and you should respond to any material issues or questions raised by participating directly in the discussion.
For root CA certificates approved for inclusion, the Mozilla representative will create a new Bugzilla bug. (Example: https://bugzilla.mozilla.org/show_bug.cgi?id=1303377)


At the end of the public discussion phase 2, the Mozilla representative will post a summary in the bug about the results of the discussion and the open action items. If there are no open issues or action items after the second discussion period, and there is general agreement that you comply with our policy requirements, then at Mozilla's discretion the Mozilla representative will post a summary and recommendation in the bug using the following template.  
The new bug number will be noted in a comment in the original bug, and the original bug will be marked as being blocked by the new bug. Make sure that the CA's representative is on the CC list of the new bug, so that they will be notified if problems or questions that arise during build and test.


https://wiki.mozilla.org/CA:Tentative_approval_template
For root CA certificates approved for EV, the Mozilla representative will create another bug for the necessary changes to be made to the Mozilla Personal Security Manager (PSM). (Example: https://bugzilla.mozilla.org/show_bug.cgi?id=1303383)


Then a representative of Mozilla may approve the request by noting approval in the bug, after which, the request will move into the inclusion phase as described below.
Root inclusion and change requests are usually grouped and done as a batch about every 3 months. At some point within about 3 months of the NSS bug being created, a test build will be provided and the NSS bug will be updated to request that the CA test it. Everyone CC'd on the bug will get notification via email when that happens.
 
=== Inclusion ===
 
For root CA certificates approved for inclusion, the Mozilla representative will create a new Bugzilla bug with the information defined in the [https://wiki.mozilla.org/CA:Inclusion_template Inclusion Template.]
 
The new bug number will be noted in a comment in the original bug, and the original bug will be marked as being blocked by the new bug. Please make sure that you are on the CC list of the new bug, so that you can quickly respond to questions that arise during build and test.
 
For root CA certificates approved for EV, the Mozilla representative will create another bug for the necessary changes to be made to the Mozilla Personal Security Manager (PSM):
* Summary: Enable [your CA name] for EV
* Description: Per [original bug #] the request from (CA) to enable its (root name) root certificate for EV use has been approved. Please make the corresponding changes to PSM. The relevant information is as follows: Name, Sha-1 fingerprint, EV Policy OID, test website URL.
 
It is highly recommended that you make sure you are on the CC list for the new bug(s). The more actively you monitor the new bug(s) and provide requested information, the faster the request can be addressed.
 
Root inclusion and change requests are usually grouped and done as a batch about every 3 months. At some point within about 3 months of the NSS bug being created, a test build will be provided and the NSS bug will be updated to request that the CA test it. If you are cc'd on the bug, you will get notification via email when that happens.
 
Here are the steps involved in updating Firefox to include a new root certificate.
# The Mozilla representative who shepherded the request through the discussion and approval process creates the NSS bug as described above.
# A representative of the CA confirms that all the data in the NSS bug is correct, and that the correct certificate(s) have been attached.
# A different Mozilla representative creates a patch with the new certificate(s), and provides a special test version of Firefox.
# A representative of the CA uses the test version of Firefox to [[CA:How_to_apply#Testing_Inclusion  | test that the certificate(s) have been correctly imported and that websites work correctly.]]
# The Mozilla representative who created the patch requests that another Mozilla representative review the patch. This may result in further updates to the patch, until a final patch is agreed on.
# The Mozilla representative who created the patch adds (commits) the patch to NSS, then closes the NSS bug as fixed.
# The Mozilla representative who created the patch coordinates with the people who test NSS to test the patch as part of an upcoming release of NSS.
# The test team completes testing and approves the release of a new version of NSS.
# Firefox product drivers decide when to pick up the new release of NSS, and in which versions of Firefox to included the updated version of NSS. This will be in a future version of Firefox, and sometimes a version of NSS will also be released as a security update to previous versions of Firefox.


This work is distributed across many different people, and many different decision factors are considered in determining which version of Firefox will pick up a new version of NSS. This process cannot be expedited for any CA. The only time this process will be expedited is when there is a serious [http://www.mozilla.org/projects/security/security-bugs-policy.html Security Concern.]
This work is distributed across many different people, and many different decision factors are considered in determining which version of Firefox will pick up a new version of NSS. This process cannot be expedited for any CA. The only time this process will be expedited is when there is a serious [http://www.mozilla.org/projects/security/security-bugs-policy.html Security Concern.]


After the root inclusion or change is confirmed to be included in a release of Firefox, the root information will be moved from the [http://www.mozilla.org/projects/security/certs/pending/ Pending list] to the [http://www.mozilla.org/projects/security/certs/included/ Included list].
After the root inclusion or change is confirmed to be part of a release of Firefox, a Mozilla representative will update the Whiteboard status of the bug, and the corresponding information in the Common CA Database.
 
==== Testing Inclusion ====
Here are the steps that a representative of the CA should take when asked to test that the certificate has been correctly imported and that websites work correctly.
 
# Click on the test build link that is provided, choose the download file for the operating system you are using (e.g. ….mac.dmg for an Apple system). Install (e.g. by clicking on the .dmg file and following the instructions).
# It is very important to ensure that you test using a fresh profile in order to make sure you really seeing the trust bits provided by the test build, rather than the trust settings that you had set manually in an application profile. For more information about using a separate profile for testing, refer to the knowledge base articles: [http://support.mozilla.org/en-US/kb/profile-manager-create-and-remove-firefox-profiles Profile Manager] and [http://kb.mozillazine.org/Creating_a_new_Firefox_profile_on_Windows Creating a new Firefox profile.]
#* Using a fresh profile is the best way to test, but you can also restore the default certificate settings as described here: https://wiki.mozilla.org/CA:UserCertDB#How_To_Restore_Default_Root_Certificate_Settings
# When you restart Firefox, be sure to use the test build that you just downloaded and installed. It will have a different name, like "Nightly" or such.
#* If you are running Mac OS X 10.8 Mountain Lion, OS X, you may need to [https://it.uoregon.edu/fix-security-settings change the Gatekeeper settings] to allow 3rd party apps to be run. For details see {{Bug|1090459}}.
#* If you are running Mac OS 10.12 Sierra or later, Apple removed the user interface for running unsigned applications. So, you can test the try build by opening a Terminal window (Applications->Utilities->Terminal.app) and typing: "sudo spctl --master-disable". You will have to enter your system password. Be sure to type "sudo spctl --master-enable" when you are done, to reset back to the regular protection. For details see {{Bug|1352203}}.
# Check that your root certificate is included and the trust bits set correctly.
#* Open the Options/Preferences window:
#**On Windows: Pull down the Tools menu and select Options…
#** On Mac: Pull down the Firefox menu (or name of the test build, e.g Nightly) and select Preferences...
#** On Linux: Pull down the Edit menu and select Preferences
#* Select Advanced
#* Select Certificates
#* Click on View Certificates to open the Certificate Manager
#* Select Authorities
#* Find your root certificate and confirm that it is marked as "Builtin Object Token" in the Security Device column.
#* Click on your root certificate to highlight it, then click on “Edit Trust…”  Verify that the correct trust bits are checked.
# Browse to websites that have SSL certs that chain up to this root cert. The appropriate UI should appear indicating it is a secure website. Click on the lock and View Certificate, to see details.
# Comment in the bug to indicate your testing results.
 
Note: EV-enablement is done in a separate bug, after the root has been included.
 
Recommendation: I find the "Cert Viewer Plus" Add-On useful for doing this type of testing. After you've installed this add-on, you can open the Certificate Manager from the Tools menu with one click. Also, when you browse to a website and click on the lock to view the details of the certificate chain, it displays the trust bit settings for the root. Additionally, the SHA-1 fingerprint in the Certificate Viewer can be selected and copied.
 
=== After Inclusion ===
CAs must follow [https://www.mozilla.org/en-US/about/governance/policies/security-group/certs/policy/maintenance/ Mozilla's CA Certificate Maintenance Policy] the entire time they have a root certificate [[CA:IncludedCAs|included in Mozilla’s CA Certificate Program]].
 
CAs are required to:
* Annually provide public-facing statement(s) of attestation of their conformance to the stated verification requirements. ([https://www.mozilla.org/en-US/about/governance/policies/security-group/certs/policy/maintenance/ section 4])
* Notify Mozilla when its policies and business practices change in regards to verification procedures for issuing certificates, when the ownership control of the CA’s certificate(s) changes, or when ownership control of the CA’s operations changes. ([https://www.mozilla.org/en-US/about/governance/policies/security-group/certs/policy/maintenance/ section 5])
* Ensure that Mozilla has their current contact information. ([https://www.mozilla.org/en-US/about/governance/policies/security-group/certs/policy/maintenance/ section 6])
 
Additionally, CAs must maintain their data in the [[CA:SalesforceCommunity|CA Community in Salesforce]] about:
* All certificates that are capable of being used to issue new certificates, and which directly or transitively chain to their certificate(s) included in Mozilla’s CA Certificate Program that are not technically constrained as described in section 9 of [https://www.mozilla.org/en-US/about/governance/policies/security-group/certs/policy/inclusion/ Mozilla's CA Certificate Inclusion Policy].
* [[CA:ImprovingRevocation#Preload_Revocations_of_Intermediate_CA_Certificates|Revoked certificates]] that were capable of being used to issue new certificates, and which directly or transitively chain to their certificate(s) included in Mozilla’s CA Certificate Program and were not technically constrained as described in section 9 of [https://www.mozilla.org/en-US/about/governance/policies/security-group/certs/policy/inclusion/ Mozilla's CA Certificate Inclusion Policy].
 
[https://www.mozilla.org/en-US/about/governance/policies/security-group/certs/policy/enforcement/ Mozilla's CA Certificate Enforcement Policy] outlines action that Mozilla will take when these requirements are not met by CAs with included root certificates.
 
== Frequently Asked Questions ==
 
=== Enable Additional Trust Bits for an included root ===
 
How can a CA enable additional trust bits for their root that is already included in Mozilla?
 
# Update the CP/CPS to reflect the policies for the additional trust bits, and make sure that the additions to the CP/CPS follow [https://www.mozilla.org/en-US/about/governance/policies/security-group/certs/policy/inclusion/ Mozilla's CA Certificate Inclusion Policy], especially section 7. 
# Also see the [[CA:Recommended_Practices|Recommended Practices]] and [[CA:Problematic_Practices|Potentially Problematic Practices]], and in particular:
#* https://wiki.mozilla.org/CA:Recommended_Practices#Verifying_Domain_Name_Ownership
#* https://wiki.mozilla.org/CA:Recommended_Practices#Verifying_Email_Address_Control
#* https://wiki.mozilla.org/CA:Recommended_Practices#Verifying_Identity_of_Code_Signing_Certificate_Subscriber
#* Note that whenever a root is changed, the Mozilla representative has to fully review all of the related information, not just the documentation for the trust bits being enabled, but also for the already enabled trust bits and EV treatment.
# Have the annual audit cover the updated CP/CPS.
#* Make sure that the audit meets the requirements stated in [https://www.mozilla.org/en-US/about/governance/policies/security-group/certs/policy/inclusion/ Mozilla's CA Certificate Inclusion Policy] sections 11 through 14.
# File a bug by clicking on the "Create a new bug report" link in [[CA:How_to_apply#Creation_and_submission_of_the_root_CA_certificate_inclusion_request|Section 1.2]] above.
#* Change the bug summary to "Enable trust bits for <name of your root>".
#* In the bug description add a reference to the original root-inclusion bug number.
#* In the bug description include links to the updated CP/CPS and the updated audit.
# The request will go through the [[ CA:How_to_apply#Information_Verification|Information Verification]], [[CA:How_to_apply#Public_discussion|Public Discussion]], and [[CA:How_to_apply#Inclusion|Inclusion]] phases as described above.
 
=== Enable EV for an included root ===
 
How can a CA enable EV for their root that is already included in Mozilla?
 
# Update the CP/CPS to reflect the EV policies, and make sure that the additions to the CP/CPS follow the [http://www.mozilla.org/projects/security/certs/policy/ Mozilla CA Certificate Policy] as well as the EV SSL Certificate Guidelines that are posted on the CA/Browser Forum website.
# Also see the [[CA:Recommended_Practices|Recommended Practices]] and [[CA:Problematic_Practices|Potentially Problematic Practices]].
# Complete an EV audit that meets the requirements stated in [http://www.mozilla.org/en-US/about/governance/policies/security-group/certs/policy/inclusion/ Mozilla's CA Certificate Inclusion Policy.]
# File a bug by clicking on the "Create a new bug report" link in [[CA:How_to_apply#Creation_and_submission_of_the_root_CA_certificate_inclusion_request|Section 1.2]] above.
#* Change the bug summary to "Enable EV for <name of your root>".
#* In the bug description add a reference to the original root-inclusion bug number.
#* In the bug description include links to the updated CP/CPS and the WebTrust EV or ETSI TS 102 042 ("EVCP" and "EVCP+") audit statement.
#* Attach a screenshot to the bug showing successful completion of EV testing, https://wiki.mozilla.org/PSM:EV_Testing_Easy_Version.
# The request will go through the [[ CA:How_to_apply#Information_Verification|Information Verification]], [[CA:How_to_apply#Public_discussion|Public Discussion]], and [[CA:How_to_apply#Inclusion|Inclusion]] phases as described above.
 
=== Include a Renewed root ===
 
How can a CA apply for inclusion of new root that is a renewal or rollover of a root that is already included in Mozilla?
 
# Update the CP/CPS to reflect the policies for the new root, and make sure that the additions to the CP/CPS follow [https://www.mozilla.org/en-US/about/governance/policies/security-group/certs/policy/inclusion/ Mozilla's CA Certificate Inclusion Policy], especially section 7. 
# Also see the [[CA:Recommended_Practices|Recommended Practices]] and [[CA:Problematic_Practices|Potentially Problematic Practices]].
# Have the annual audit cover the updated CP/CPS and the new root.
#* Make sure that the audits meet the requirements stated in sections 11 through 14 of [https://www.mozilla.org/en-US/about/governance/policies/security-group/certs/policy/inclusion/ Mozilla's CA Certificate Inclusion Policy.]
# File a bug by clicking on the "Create a new bug report" link in [[CA:How_to_apply#Creation_and_submission_of_the_root_CA_certificate_inclusion_request|Section 1.2]] above.
#* Change the bug summary to "Add Renewed [your CA's name] root certificate".
#* In the bug description add a reference to the original root-inclusion bug number.
#* In the bug description include links to the updated CP/CPS and the updated audit.
# The request will go through the [[ CA:How_to_apply#Information_Verification|Information Verification]], [[CA:How_to_apply#Public_discussion|Public Discussion]], and [[CA:How_to_apply#Inclusion|Inclusion]] phases as described above.
 
==== Root certificates with the same subject and different keys ====
 
The standards allow for two CA certificates to have the same subject names but different subject public keys. Please try to avoid this, because it often leads to confusion and compatibility issues. When verifying an end-entity certificate chaining up to a root certificate with the same subject name as another root certificate, if Firefox is aware of the existence of both root certificates, it will try all possible orderings of (subject, issuer) pairs until it finds the right one. If there are many certificates all with the same subject and issuer names, the number of orderings grows exponentially, so it can take a long time to evaluate the certificate chains. Therefore, it is better to avoid these kinds of situations.
 
Note that for root certificates, Firefox ignores the authority key identifier and subject key identifier extensions.
 
==== Root certificates with the same subject and same key ====
There are cases where CAs have multiple certs with the same subject and same key (for root certificates subject == issuer). The basic times this occurs are:
# A CA spins up a new root with an old key because the old root is about to expire or uses an old certificate signature algorithm. NSS sorts certs by validity periods so that the new cert is chosen. {{bug|515462#c27}} has an example of an intermediate cert that contains the issuer name and serial number, but not the issuer's key id, so when the new root cert was added to NSS, the intermediate cert could be trusted by the new cert.
# A CA initially spins up with an intermediate signed by a competitor while they get their paperwork for inclusion in all browsers. The CA then spins up it's own root cert.
# The CA participates in a bridge system. In this case the user trusts one CA. Each CA signs an intermediate which authenticates the Bridge CA (with whatever appropriate constraints the CA puts on the bridge). The Bridge CA signs an intermediate which authenticates the CA.
 
NOTE: For cases 1 & 2  above if NSS does not trust the newer cert, the existence of that cert in the wild could challenge certificate validation in the old NSS code, at least until {{bug|764393}} was fixed.
 
==== Root certificates with the same subject and serial number ====
 
Do '''not''' create root certificates with the same subject and serial number. For root certificates subject == issuer. 
<p>
NSS '''does not''' support certificates with the same issuer and serial number.
</p>
* {{bug|312732#c19}} - NSS has been designed internally to rely heavily on the issuer+serial uniqueness assumption
* {{bug|435013#c43}} - serial number uniqueness is used for revocation checking and for mitigate collision attacks against certs signed with weak hash functions.
* {{bug|727204}} - NSS 3.13.x is capable of blocking certificates by issuer DN and serial number by adding an appropriate trust record to NSS' builtin module
 
=== Changing ''Verified By'' Information ===
 
A CA with a root certificate currently included in Mozilla products should contact Mozilla directly, via certificates@mozilla.org, to [[CA:RootTransferPolicy|inform Mozilla when an acquisition has taken place]] relating to the ownership and/or operations of the root certificate.
 
In regards to re-branding...
* The text that is displayed within the blue or green bar in the address field of the Firefox browser is obtained directly from the end-entity SSL certificate.
* The "Verified by" popup information is also obtained directly from the end-entity SSL certificate (Issuer Organization or Issuer Common Name).
Therefore a CA may change the information that is displayed in the "Verified by" popup, by creating a new intermediate issuing certificate with the desired information in the Subject Organization or Common Name.

Latest revision as of 01:14, 17 February 2023

This page provides information about the evaluation of a CA's root inclusion or change request. See the Application Process Overview for the list of the steps in the application process.

Information Verification

In this phase, a representative of Mozilla or another Root Store Member of the Common CA Database (CCADB) will review and confirm that the information has been provided through the CCADB. They will check to make sure that all required information has been provided. They may ask for further information if it is needed. The duration of this phase depends on the completeness of the information provided in CCADB, documentation uploaded to Bugzilla, and the CA's responsiveness in providing further information when asked for it.

The person conducting initial information verification uses the CCADB to check the completeness of information about:

  • the CA owner,
  • the CA's auditor,
  • annual audits and auditor's key generation report(s),
  • the CA's policy and practices documentation, and
  • the root certificates themselves.

Important: The Mozilla representative should deny the root inclusion request during Information Verification when they are aware that the applying CA operator has engaged in Unacceptable Behavior or a collection of the Concerning Behaviors.

For each root certificate under consideration, the reviewer will confirm that information has been populated in the CCADB.

  1. For each root certificate, review:
    • Explanation of purpose
    • Root download URL
    • URL for full CRL (or JSON array constituting full CRL)
    • PKI Hierarchy (see below for specific items requiring Detailed Review)
    • For TLS server certificates, confirm whether the root certificate has been tested using:
    • For the email trust bit, a Mozilla representative will download the S/MIME certificate(s) from Bugzilla and check the chaining and root information.
  2. Review and verify that all relevant parts of the CA's Compliance Self-Assessment have been completed. The Compliance Self-Assessment is used to review the CA's policies and practices during the Detailed Review, explained below.
  3. Review audit documents to make sure that requirements are met.
    • Make sure the audit isn’t more than a year old.
    • Confirm that there is a URL link to an auditor's report for the root key generation event.
    • Determine the frequency at which any audit(s) for subordinate CAs are done.
    • Verify that the audit was performed by an independent third party.
    • Verify that the audit covers the practices and requirements for the trust bits requested.
    • Review the audit report to flag any issues noted in the report.
    • Do an independent verification of the audit when the report is provided by or posted by the submitter, rather than being posted on the auditor's site or the CPA Canada Webtrust site.
      • Look on the internet to verify that the auditor meets the policy requirements, and to find contact information for the auditor.
      • Using the contact information found on the internet, verify the authenticity of the report by inquiring with the auditor whether the report was issued by them and that the contents match the audit report that they issued.

A Mozilla representative will check for completeness of any additional, Mozilla-specific requirements.

Once all this data has been verified, Mozilla or a CCADB representative will update the whiteboard section in the bug to indicate that the request is ready for detailed review of the CA's documentation and public discussion.

Detailed Review

The detailed review phase occurs simultaneously with the public discussion phase. A representative of Mozilla, a Root Store Member of the CCADB, or of the Community (as agreed by a Mozilla representative) thoroughly reviews the CA’s documents and audits, existing bugs, and other public information sources such as crt.sh. Compliance with the Mozilla Root Store Policy, applicable CA/Browser Forum guidelines, and applicable audit criteria is assessed and deviations are noted. The findings from such reviews are summarized presented during public discussion.

Depending on the nature of the findings, the reviewer may choose to list some or all of them in the bug or in the CCADB discussion and give the CA the opportunity to address them (typically by updating documents or providing additional information).

CP/CPS Review

The CA's Compliance Self-Assessment is used to guide the detailed review of the CA's CP, CPS, or combined CP/CPS. (The Compliance Self-Assessment is a more comprehensive review than the list provided below.)

Review the CP and CPS or combined CP/CPS and compare them with the CA's responses in the Compliance Self-Assessment, including:

  • A statement that gives precedence to applicable CA/Browser Forum requirements;
  • Text that demonstrates the CA verifies all information to be included in certificates, as required by Mozilla's Root Store Policy and the CA/Browser Forum's Baseline Requirements;
  • Evidence that the CA follows Mozilla's required or recommended practices;
  • Instances where the CA might use forbidden or problematic practices;
  • A statement about the frequency of update for the CRLs for end-entity certificates chaining to the root; and
  • A statement about the maximum time until OCSP responders are updated to reflect end-entity revocation (if OCSP is enabled).

All documents supplied as evidence must be publicly available and must be addressed in any audit. Any substantial omissions submitted afterwards may need to be confirmed by an auditor, at Mozilla's discretion.

PKI Hierarchy Review

Review CA hierarchy information provided for each root (preferably in the form of both a diagram and a description).

  1. Make sure that there is a clear list and/or description of the internally operated subordinate CAs chaining to the root. For internally-operated subordinate CAs the key is to confirm that their operation is addressed by the relevant CP/CPS, and that any audit covers them as well as the root.
  2. Make sure there is a clear list and/or description of the subordinate CAs that are operated by third parties. Make sure there is a clear general description and an explanation as to how the CP/CPS and audits ensure the third parties are in compliance with our policy requirements as per the Subordinate CA Checklist.
    • Verify that contractual arrangements require third-party subordinates to operate in accordance with a CP/CPS that meets applicable requirements.
    • Investigate applicable technical arrangements on subordinate CAs, including EKUs and name constraints, pathlength constraintes that don't allow subordinates to create their own subordinates, etc.
    • Determine the extent and nature of audits performed against subordinate CAs, including whether or not subordinate CAs are included within the scope of any audit(s) done against the root CA, whether or not subordinate CAs are subject to third-party audits independent of any audit(s) done against the root CA, and whether or not you perform your own audits of subordinate CAs.
  3. Determine if there are any other root CAs that have issued cross-signing certificates for this root CA.

EV Enablement Review

For requests to enable a root so that EV certificates may be issued under that root:

  1. Verify the presence of the CA/Browser Forum's EV policy OID (2.23.140.1.1).
  2. Make sure the CP/CPS incorporate (directly or by referenced) the EV Guidelines as published by the CA/Browser Forum.
  3. Make sure there have been audits within the past year for both EV and non-EV TLS certificate issuance
  4. If any of the subordinate CAs that are operated by third-parties are or will be EV enabled, refer to the EV guidelines and make sure there are EV audit statements for them.

Public Discussion

Mozilla's root inclusion process occurs publicly, and anyone may participate. We therefore include in our evaluation process a six-week period for public comment during which interested parties may review the information the CA supplied, ask additional questions regarding the CA, and provide their opinions on whether the request should be approved or not.

For Mozilla, the public discussion process occurs in two steps. At the end of the six-week public discussion process, we will make a preliminary determination as to whether the request will be approved or not, based on the information supplied and the resolution of any new issues raised during public discussion.

Following the six-week discussion period, we announce a one-week "last-call" period, during which interested parties may make final comments. And after that phase, we will make a final decision by updating the request in Bugzilla.

Who participates in the public discussions?
Members of the Mozilla community volunteer their time to review CA inclusion requests and provide their feedback. Participants should have knowledge of PKI, business practices, and policies. The more participants contributing to each discussion, the better the discussion will be in regards to ferreting out issues, helping the requester to improve their practices, and bringing the discussion to closure.

Note: If you have not contributed to a discussion before, wait no more! The more you contribute to discussions, the more you establish yourself as a knowledgeable and objective reviewer. Then, when there is a request that you are particularly interested in providing feedback on, your contributions will be even more effective. Additionally, if you are a CA with a request in the queue, participating in other discussions is a great way to learn the expectations and be prepared for the discussion of your request.

What do reviewers look for?
Reviewers of CA inclusion requests look for anything which could be of concern to Mozilla.

  • Review the CP/CPS documents to determine if they are sufficiently detailed, and meet the requirements of Mozilla's CA Policy and the CA/Browser Forum's Baseline Requirements.
  • Are all items listed in the Mozilla Root Store Policy addressed?
    • In particular, are there effective controls for certificate issuance and auditing of the same, which include:
      • Verification of domain control for webserver certificates
      • Verification of email address control for email certificates
  • Are the Recommended Practices followed?
  • Are there any Problematic Practices?
  • Are there previous recommendations that should be taken into consideration in this case?
  • Are there any potential risks that should be investigated?

Note: The official position of Mozilla might be different than the recommendations and suggestions of the reviewer. Reviewers are encouraged to contribute their recommendations and suggestions to the discussions. A representative of Mozilla will state when the official position of Mozilla differs from what has been posted in a discussion.

Where do the discussions take place?
Public discussions about root inclusion and change requests take place in the CCADB public mailing list.

Will my input be viewed as representing my employer?
A representative of the CA whose root inclusion request is being discussed must clearly represent their employer and must promptly respond directly in the discussion thread to all questions that are posted.

All other contributors to the discussion may choose between representing their employer or not. When you post your input into the discussion, you may choose to use a non-work-related email address and/or add a note in your signature stating that the views/comments posted therein are of your opinion only, and do not represent the views/opinions of the company you work for. On the other hand, some contributors prefer to use their work email address and provide their input as an employee representing their employer. It’s up to you.

How long does a discussion take?
The discussion period is six weeks long.

How can you help?

You can help by reviewing and providing your feedback in each public discussion of root inclusion requests, or by asking a colleague to do so.

For each discussion for a CA that is new to Mozilla's program, there should be input from at least two people who have reviewed and commented on the request. The comment can be questions, requests for clarification, or statements about items that you find concerning with respect to how the CA follows Mozilla's Root Store Policy. The comment can also be as simple as “I have reviewed this request and find nothing of concern” (if that is indeed the case).

Discussion on Public List at CCADB.org

To begin this phase, a representative of Mozilla or one of the other Root Store Members of the CCADB will create a new discussion thread in the CCADB public mailing list and will post information to the associated bug that the public discussion has begun.

Here is how a typical discussion proceeds:

  1. A Mozilla or CCADB representative starts the discussion by providing a summary of the request, and a summary of the information about the CA's practices.
  2. People from the Community reply in the discussion to ask questions and comment on the request.
  3. A representative of the CA replies to the questions and comments in the discussion thread. This may result in further discussion. Others from the Community may add their opinions and ask more questions.
  4. Once the question/answer discussions have begun to reach conclusions, then a representative of the CA may propose changes to make to the CP/CPS to address the concerns. This may result in further discussion.
  5. After the discussions have resulted in a clear set of things to update in the CP/CPS and possibly operational practices, then the Mozilla or CCADB representative will close the discussion and track the action items in the bug. In some circumstances, the CA may have to complete action items after the six-week discussion period. Then the Mozilla representative will review and confirm whether the action items have been completed, and then the Mozilla representative may start a second round of discussion.

CAs are expected to participate directly in all discussions, by responding to questions raised in the public mailing list and/or posting comments to the bug. The discussion is public, so please ensure that any information provided is not proprietary or confidential. The more active CAs are in responding to inquiries within the discussion, the more productive the discussion will be.

At the end of the first public discussion phase, the Mozilla representative or representative of a CCADB Root Store Member will post a summary about the results of the discussion and any open action items. Technical concerns, information about subordinate CAs (particularly those operated by third-parties), and potentially problematic practices will be specifically stated. The resulting information will vary depending on what issues or items of note have been found.

If there are no open issues or action items after the first discussion period, and there is general agreement that the CA complies with our policy requirements, then the Mozilla representative will post a recommendation in the bug. The final decision on whether to include the root certificate will be at Mozilla's discretion.

Response to public discussion

If there are follow-up actions to be performed during the first public discussion phase, then the Mozilla representative may decide to postpone further public discussion until the CA addresses particular issues or provides additional information. The duration of this postponement is dependent on how long it takes to complete the action items. The CA should post updates to the action items in the bug. When the action items are completed, and verified by a Mozilla representative, the Mozilla representative may re-start public discussion.

Last Step in Public Discussion

In the final step of public discussion, a Mozilla representative will announce a final, "last call" discussion period of one week. Interested members of the general public may make final objections to Mozilla's announced intention. If there are no open issues or action items, and if there is general agreement that the CA complies with our policy requirements, then at Mozilla's discretion, a Mozilla representative will indicate in the bug whether the CA's request has been approved or denied.

NSS and PSM Bug Creation

For root CA certificates approved for inclusion, the Mozilla representative will create a new Bugzilla bug. (Example: https://bugzilla.mozilla.org/show_bug.cgi?id=1303377)

The new bug number will be noted in a comment in the original bug, and the original bug will be marked as being blocked by the new bug. Make sure that the CA's representative is on the CC list of the new bug, so that they will be notified if problems or questions that arise during build and test.

For root CA certificates approved for EV, the Mozilla representative will create another bug for the necessary changes to be made to the Mozilla Personal Security Manager (PSM). (Example: https://bugzilla.mozilla.org/show_bug.cgi?id=1303383)

Root inclusion and change requests are usually grouped and done as a batch about every 3 months. At some point within about 3 months of the NSS bug being created, a test build will be provided and the NSS bug will be updated to request that the CA test it. Everyone CC'd on the bug will get notification via email when that happens.

This work is distributed across many different people, and many different decision factors are considered in determining which version of Firefox will pick up a new version of NSS. This process cannot be expedited for any CA. The only time this process will be expedited is when there is a serious Security Concern.

After the root inclusion or change is confirmed to be part of a release of Firefox, a Mozilla representative will update the Whiteboard status of the bug, and the corresponding information in the Common CA Database.