CA/Application Instructions: Difference between revisions

From MozillaWiki
< CA
Jump to navigation Jump to search
Line 47: Line 47:
# Do some initial preparations before you formally submit a request:
# Do some initial preparations before you formally submit a request:
#* Read through the [http://www.mozilla.org/projects/security/certs/policy/ Mozilla CA certificate policy] to learn all the requirements for the certificate to be included in Mozilla products, and to determine if your CA is eligible.
#* Read through the [http://www.mozilla.org/projects/security/certs/policy/ Mozilla CA certificate policy] to learn all the requirements for the certificate to be included in Mozilla products, and to determine if your CA is eligible.
#* Identify your typical (or expected) customers that would benefit from your root certificate being included in Mozilla products. Note the [http://www.mozilla.org/projects/security/certs/policy/ Mozilla CA certificate policy]:
#** Section 1: We will determine which CA certificates are included in software products distributed through mozilla.org, based on the benefits and risks of such inclusion to typical users of those products.
#** Section 6: We require that all CAs whose certificates are distributed with our software products: provide some service relevant to typical users of our software products;
#* Read through the [[CA:Recommended_Practices|Recommended Practices]] for further explanation about the requirements for the certificate to be included in Mozilla products.
#* Read through the [[CA:Recommended_Practices|Recommended Practices]] for further explanation about the requirements for the certificate to be included in Mozilla products.
#* Gather all of the information requested as part of our [[CA:Information_checklist|CA Information Checklist]].
#* Gather all of the information requested as part of our [[CA:Information_checklist|CA Information Checklist]].

Revision as of 18:25, 24 February 2010

Applying for root inclusion in Mozilla products

This information is intended to help official representatives of Certification Authorities (CAs) applying to have root certificate(s) included in Mozilla products. Our goal is to make the process as straightforward as possible for CAs, while ensuring that CAs do everything needed for us to determine whether they meet the requirements of our Mozilla CA certificate policy.

The main phases involved in evaluating a root for inclusion in Mozilla products are

  1. Creation and submission of the CA root certificate inclusion request
  2. Information gathering and verification
  3. Public discussion
  4. Decision on inclusion
  5. Code change for inclusion and associated testing

IMPORTANT: The information described in the "Information Gathering and Verification" section below is expected to be publicly available so that it can be reviewed and referenced during the Public Discussion Phase.

Timeline

The following table shows the best case time and the typical time that it takes to complete each of the phases of the root inclusion process. The best case scenario assumes that the CA responds within one day to each and every request, that all of the information in the CA information checklist has been provided, that the CA follows the Mozilla CA Certificate Policy and Recommended Practices, and that the CA doesn't have any Potentially Problematic Practices. The timeline shown for the typical case assumes that the CA responds to each request within two days, that there are only a small number of concerns that need to be addressed, and that all of the concerns that are raised are resolved promptly. Both timelines assume that an audit that meets the requirements of the Mozilla CA Certificate Policy is performed annually.

  • This timeline is based on information available in July, 2009, and is subject to change.
  • The time spent in the Queue for Public Discussion depends on the priority of the request as per General Priority. The time may also vary depending on the prior entries in the queue.
Phase Best case ... Typical case
Information Gathering and Verification 2 weeks 2 months
Queue for Public Discussion 4 months 4 months
First Public Discussion 2 weeks 4 weeks
Response to First Public Discussion not needed CA-specific
Second Public Discussion not needed 2 weeks
Formal approval 1 week 1 week
Inclusion in NSS 3 months 3 months
Inclusion in Firefox 2 months 2 months
Total ~10 months >13 months

IMPORTANT: These are hypothetical estimates, and are not promises or commitments regarding any specific CA's request.

Creation and submission of the root CA certificate inclusion request

The steps to create a complete root certificate request are as follows:

  1. Do some initial preparations before you formally submit a request:
    • Read through the Mozilla CA certificate policy to learn all the requirements for the certificate to be included in Mozilla products, and to determine if your CA is eligible.
    • Identify your typical (or expected) customers that would benefit from your root certificate being included in Mozilla products. Note the Mozilla CA certificate policy:
      • Section 1: We will determine which CA certificates are included in software products distributed through mozilla.org, based on the benefits and risks of such inclusion to typical users of those products.
      • Section 6: We require that all CAs whose certificates are distributed with our software products: provide some service relevant to typical users of our software products;
    • Read through the Recommended Practices for further explanation about the requirements for the certificate to be included in Mozilla products.
    • Gather all of the information requested as part of our CA Information Checklist.
    • Review the list of potentially problematic CA practices that have caused issues with other CAs' applications, and determine whether any of them might apply to you.
    • Designate someone to be your official representative for purposes of your application. You should choose someone who is reasonably fluent in written English and familiar with the operations of the CA.
    • If you have questions about the policy or the evaluation process, please contact us at certificate@mozilla.org. We will be glad to discuss with you how the process works, and can give you informal advice on how to ensure that the process goes as smoothly as possible for you.
  2. Once you are ready, formally submit your request using the Mozilla project's Bugzilla issue tracking system:
    • If you don't already have a Bugzilla account, create an account for yourself. Note that you must supply an email address when creating an account; this address will be made public, and will be used for communications, related to your request. If you do not want to use your official work email address for this, please provide another email that will work for you.
    • Create a new bug report corresponding to your request. The link just given will fill in many the multiple-choice fields correctly, and add templated text to the Summary and Description which you then need to replace with the appropriate information about your CA and your root(s).
      • CA information lists the template that will be automatically added to your bug when you use the link above to create the new bug report.
      • CA information checklist provides further details and explanation about the information that needs to be included in the bug description.
      • Please also provide CA Contact Information, which Mozilla uses to inform CAs of upcoming policy changes, warn CAs if Mozilla has to take measures that may impact their roots, perform periodic reviews of renewed audits, inform CAs of policy discussions which affect them, and quickly contact a CA if an issue arises with their root(s).
        • CA Email Alias: An email alias that includes the people in your company who should receive correspondence from Mozilla in regards to root certificates. An email alias is requested so that more than one person in your organization will receive notifications in case the primary contact is out of the office or leaves the organization.
        • CA Phone Number: A main phone number from which Mozilla can reach the organization responsible for root certificates for the CA.
        • Title / Department: If Mozilla needed to call your main phone number, what Title/Department should the Mozilla representative ask for?
      • Do NOT select "Restricted Visibility" or "Role Visibility". All information that is submitted for Root Inclusion requests must be publicly available.
    • Commit your request and note the bug number assigned to it.
  3. Watch for email from bugzilla-daemon@mozilla.org containing additional requests for information.
    • It is recommended that you add bugzilla-daemon@mozilla.org to your email contacts so that notifications of updates to your bug don't get filtered into your SPAM folder.
  4. NOTE: For audit reports and other information that is provided by third parties, we need to confirm with the auditor (or other third party) that the information is genuine. You can help us do this as follows:
    1. If the information is available from the auditor's (or other third-party's) web site or from another authoritative web site (for example, webtrust.org for WebTrust reports), please provide the URL where the information can be found.
    2. If you provide the information yourself (e.g., it is hosted on your own web site), please provide us with contact information for the auditor (or other third party).
    3. Otherwise please ask the auditor (or other third party) to contact us directly and provide us the audit report(s) or other information.

IMPORTANT: Note that all information submitted to our Bugzilla system is publicly available to anyone on the Internet. Please do not include proprietary or confidential information in your request. If you wish to discuss confidential or sensitive matters, please do so via private email to certificates@mozilla.org.

Information gathering and verification

In this phase someone working on behalf of the Mozilla Foundation will review and verify the information that you have supplied. 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.

The person working on behalf of the Mozilla Foundation will do the following for each root CA certificate that you wish to have included:

  1. Verify the information provided in response to the information checklist.
    • Download the root CA certificate in Firefox, and compare against the data provided.
    • Look for items of concern, such as:
      • X.509 certificate version not equal to 3.
      • For RSA public keys, modulus length of 1024 bit. (NIST recommends that all such roots be phased out by the end of 2010.)
    • Download the applicable CRL(s) in Firefox to verify that they load correctly.
    • Check the OCSP responder URL in Firefox, if one is provided.
    • 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.
    • For other certificates, download the test cert and check the chaining and root information.
  2. 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 you take reasonable measures to verify the following information for end-entity certificates chaining up to this root, as per section 7 of the Mozilla CA certificate policy.
      • 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;
      • 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;
      • 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;
    • Identify if the SSL certificates chaining up to this root are DV and/or OV. Some of the potentially problematic practices, only apply to DV certificates.
      • DV: Organization attribute is not verified. Only the Domain Name referenced in the certificate is verified to be owned/controlled by the subscriber.
      • OV: Both the Organization and the ownership/control of the Domain Name are verified.
    • Look for potentially problematic practices, and request further information whenever one of these practices is applicable.
    • 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.
  3. 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 any other root CAs that have issued cross-signing certificates for this root CA.
  4. Review audit documents to make sure that the requirements are met in regards to sections 8, 9, and 10 of the Mozilla CA certificate policy.
    • 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 of ETSI TS 101 456, ETSI TS 102 042, or WebTrust Principles and Criteria for Certification Authorities.
    • 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 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, 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.
  5. 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 both a WebTrust CA and WebTrust EV audit within the past year.
    • If any of the subordinate CAs that are operated by third-parties are or will be EV enabled, refer to EV guidelines section 7.b.1 and section 37b. Also, provide audit requirements for these third-parties.

Once all of this data has been gathered and verified, the Mozilla representative will update the whiteboard section in the bug and the status of the corresponding entry in the pending CA request list will be updated to “Information confirmed complete”. The request will be prioritized and added to the Queue for Public Discussion. The bug will be updated when the request enters into the first 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, each lasting a week. 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 requestor to improve their practices, and bringing the discussion to closure.

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

  • 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
  • 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 the Mozilla Foundation 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 newsgroup and the corresponding dev-security-policy@lists.mozilla.org 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 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 goal is to have each discussion take about one week. However, that time 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, 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 the Mozilla Foundation 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.

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 the Foundation'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 another 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 Foundation 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 the Mozilla Foundation 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 the Foundation'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 another 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.

Inclusion

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.

When the NSS and PSM bugs have been completed, they will be resolved as FIXED.

After the root is confirmed to be included in a security update to Firefox, the root information will be moved from the Pending list to the Included list.

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?

  1. Update the CP/CPS to reflect the policies for the additional trust bits, and make sure that the additions to the CP/CPS follow the Mozilla CA Certificate Policy, especially section 7.
  2. Also see the Recommended Practices and Potentially Problematic Practices.
  3. Have the annual audit cover the updated CP/CPS.
  4. File a bug by clicking on the "Create a new bug report" link in 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.
  5. The request will go through the Information Gathering and Verification, Public Discussion, and 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?

  1. Update the CP/CPS to reflect the EV policies, and make sure that the additions to the CP/CPS follow the Mozilla CA Certificate Policy as well as the EV SSL Certificate Guidelines Version 1.2 that are posted on the CA/Browser Forum website.
  2. Also see the Recommended Practices and Potentially Problematic Practices.
  3. Complete a WebTrust EV audit that meets the requirements stated in the Mozilla CA Certificate Policy.
  4. File a bug by clicking on the "Create a new bug report" link in 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 audit.
  5. The request will go through the Information Gathering and Verification, Public Discussion, and 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?

  1. Update the CP/CPS to reflect the policies for the new root, and make sure that the additions to the CP/CPS follow the Mozilla CA Certificate Policy, especially section 7.
  2. Also see the Recommended Practices and Potentially Problematic Practices.
  3. Have the annual audit cover the updated CP/CPS and the new root.
  4. File a bug by clicking on the "Create a new bug report" link in 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.
  5. The request will go through the Information Gathering and Verification, Public Discussion, and Inclusion phases as described above.