CA/Application Verification: Difference between revisions
(cleanup) |
(cleanup) |
||
Line 3: | Line 3: | ||
= 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 | 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 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 | The person working on behalf of Mozilla will do the following for each root certificate under consideration. | ||
# Verify the information provided in response to the [[CA | # Verify the information provided in response to the [[CA/Information_Checklist|information checklist]]. | ||
#* Download the root | #* Download the root certificate, import it into Firefox, and compare against the data provided. | ||
#* | #* Test using: | ||
#** | #** http://certificate.revocationcheck.com/ | ||
#** | #** https://crt.sh/ | ||
#* | #** BR Lint Test: https://github.com/awslabs/certlint | ||
#* | #** X.509 Lint Test: https://github.com/kroeckx/x509lint | ||
#* For SSL certificates, try the | #* For SSL certificates, try the 3 websites (valid, expired, revoked) that have been provided, ensure that the SSL cert chains up to the root certificate under evaluation, and that the sites display as expected. | ||
#* For other certificates, download the test cert and check the chaining and root information. | #* For other certificates, download the test cert and check the chaining and root information. | ||
# When the websites trust bit is requested, review and verify the CA's BR Self Assessment, to ensure that all BR items are sufficiently addressed and documented in the CA's CP/CPS. | |||
# Review the CP/CPS to | # 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. | #* Look for a statement about the frequency of update for the CRLs for end-entity certificates chaining to this root. | ||
#* Look for a statement about the maximum time until OCSP responders are updated to reflect end-entity revocation (if OCSP is enabled). | #* Look for a statement about the maximum time until OCSP responders are updated to reflect end-entity revocation (if OCSP is enabled). | ||
#* Ensure that there is text in the CP/CPS that demonstrates that | #* Ensure that there is text in the CP/CPS that demonstrates that the CA takes reasonable measures to verify the information to be included in the certificate, as required by Mozilla's Root Store Policy and the CA/Browser Forum's Baseline Requirements. | ||
#* Look for evidence that the CA follows Mozilla's [[CA/Required_or_Recommended_Practices|required or recommended practices]]. | |||
#* Look for instances where the CA might use [[CA/Forbidden_or_Problematic_Practices|forbidden or problematic practices]]. | |||
#* | #* 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 auditor, at Mozilla's discretion. | ||
#* | |||
#* All documents supplied as evidence | |||
# Review CA hierarchy information provided for this root (preferably in the form of both a diagram and a description). | # 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 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 | #* 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. | #** 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. | #** 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 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 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. | #* Determine if there are any other root CAs that have issued cross-signing certificates for this root CA. | ||
# Review audit documents to make sure that | # Review audit documents to make sure that Mozilla's Root Store Policy requirements are met. | ||
#* Make sure the audit isn’t more than a year old. | #* Make sure the audit isn’t more than a year old. | ||
#* 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 | #* Verify that the audit covers the practices and requirements as indicated in Mozilla's Root Store Policy. | ||
#* 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 a third-party site such as webtrust.org. | ||
Line 47: | Line 42: | ||
#* Verify the EV policy OID(s). | #* Verify the EV policy OID(s). | ||
#* Make sure the CP/CPS incorporate (directly or by referenced) the EV Guidelines as published by the CAB Forum. | #* 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 | #* Make sure there has been audits within the past year for both EV and non-EV SSL certificate issuance that meet the requirements of Mozilla's Root Store Policy. | ||
#* If any of the subordinate CAs that are operated by third-parties are or will be EV enabled, refer to | #* 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. | ||
Once all of this data has been verified, the Mozilla representative will update the whiteboard section in the bug | Once all of this data has been verified, the Mozilla representative will update the whiteboard section in the bug to indicate that the request is [[CA/Dashboard#Ready_for_Public_Discussion|Ready for Public Discussion]]. | ||
= Public discussion = | = Public discussion = |
Revision as of 23:11, 1 June 2017
This page provides information about the steps a Mozilla representative will take during evaluation of a CA's root inclusion or change request.
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 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 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 certificate under consideration.
- Verify the information provided in response to the information checklist.
- Download the root certificate, import it into Firefox, and compare against the data provided.
- Test using:
- http://certificate.revocationcheck.com/
- https://crt.sh/
- BR Lint Test: https://github.com/awslabs/certlint
- X.509 Lint Test: https://github.com/kroeckx/x509lint
- For SSL certificates, try the 3 websites (valid, expired, revoked) that have been provided, ensure that the SSL cert chains up to the root certificate under evaluation, and that the sites display as expected.
- For other certificates, download the test cert and check the chaining and root information.
- When the websites trust bit is requested, review and verify the CA's BR Self Assessment, to ensure that all BR items are sufficiently addressed and documented in the CA's CP/CPS.
- 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.
- Look for a statement about the maximum time until OCSP responders are updated to reflect end-entity revocation (if OCSP is enabled).
- Ensure that there is text in the CP/CPS that demonstrates that the CA takes reasonable measures to verify the information to be included in the certificate, as required by Mozilla's Root Store Policy and the CA/Browser Forum's Baseline Requirements.
- Look for evidence that the CA follows Mozilla's required or recommended practices.
- Look for instances where the CA might use forbidden or problematic practices.
- 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 auditor, at Mozilla's discretion.
- 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 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 if there are any other root CAs that have issued cross-signing certificates for this root CA.
- Review audit documents to make sure that Mozilla's Root Store Policy requirements are met.
- Make sure the audit isn’t more than a year old.
- Verify that the audit was performed by an independent third party.
- Verify that the audit covers the practices and requirements as indicated in Mozilla's Root Store Policy.
- 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.
- 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.
- For requests to enable a root so that EV certificates may be issued under that root:
- Verify the EV policy OID(s).
- 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 Mozilla's Root Store Policy.
- 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.
Once all of this data has been verified, the Mozilla representative will update the whiteboard section in the bug to indicate that the request is Ready for Public Discussion.
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.
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.
Who participates in the public discussions?
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.
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 of the items listed in the Mozilla CA Certificate 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
- Identification of legal entity for software certificates
- In particular, are there effective controls for certificate issuance and auditing of the same, which include:
- Are the Recommended Practices followed?
- Are there any Potentially 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 mozilla.dev.security.policy discussion forum.
- 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?
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.
How long does a discussion take?
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 Queue for Public Discussion, then you are directly impacted when there are not enough people contributing to the discussions ahead of yours.
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 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).
Phase 1 of public discussion
To begin this phase, a representative of Mozilla will create a new discussion thread in the mozilla.dev.security.policy newsgroup and will post information to the associated bug that the public discussion has begun.
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.
- People from the Mozilla 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.
- 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.
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
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.
Otherwise the Mozilla representative will list the action items that must be completed before the second phase of public discussion can begin.
Response to 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.
Phase 2 of public Discussion
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 mozilla.dev.security.policy newsgroup and will post information to the associated bug that the public discussion has begun.
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.
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.
https://wiki.mozilla.org/CA:Tentative_approval_template
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.
NSS and PSM Bug Creation
For root CA certificates approved for inclusion, the Mozilla representative will create a new Bugzilla bug with the information defined in the 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 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 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 Pending list to the Included list.