Introduction
No Sectigo server authentication certificate may be issued until we have validated the Applicant's control of the domain(s) to appear in the subject of the certificate. We refer to this process as DCV (Domain Control Validation).
Cab Forum Reference: https://cabforum.org/wp-content/uploads/CA-Browser-Forum-BR-1.5.9.pdf
Up to (and including) version 1.09 of this document, DCV could be performed using one of three methods:
The details of how these methods are performed have changed as of this version 1.09. These changes are in response to the revisions to the “Validation of Domain Authorization or Control” section of the CA/B Forum’s “Baseline Requirements” document, including those changes that are in the ballot process or that are otherwise expected to have been balloted and included by the time our implementation is completed.
This document deals with the automated methods to validate control of a domain. There are other methods which involve legal documents being exchanged that are legal and permitted within the terms of our CPS and CABF Baseline requirements but which are not further mentioned in this document.
Authorization Domain Name
When you request a certificate from us, you tell us one or more fully qualified domain names (FQDNs) that you want to see in your certificate. For each FQDN, the “Authorization Domain Name” is the domain name that you use to do the DCV.
The Authorization Domain Name can be the same as the FQDN to be validated, or the Authorization Domain Name can be the FQDN with some labels removed from the beginning.
example: If the FQDN to be included in the certificate is internal.example.com, the Authorization Domain Name could be either internal.example.com or example.com
One consequence of this is that if you request a certificate for the 2 domains (www.example.com, example.com), an Authorization Domain Name of example.com may be used to do a single validation that will validate both FQDNs, whereas an Authorization Domain Name of www.example.com may not.
An Authorization Domain Name cannot be a registry controlled name and cannot be a public suffix. That means that ‘co.uk’ or ‘com’ can’t be Authorization Domain Names, and (e.g.) ‘pvt.k12.ma.us’ can’t be an Authorization Domain Name because it is a public suffix.
For E-Mail based DCV (section 3, below), you will tell us explicitly which domain you want to use as the authorization domain.
For DNS-based DCV we will check all of the possible Authorization Domain Names.
The Authorization Domain Name never contains a wildcard ('*') character so even if the FQDN contains a wildcard character, the Authorization Domain Name will not. E.g. If the FQDN to be included in the certificate is *.service.example.com, the Authorization Domain Name could be either example.com or service.example.com
Email Challenge-Response
When the order is placed, an email address is selected from a shortlist of acceptable options. An email is sent to that address, containing a unique validation code. The email should be received by someone in control of the domain, where they can follow a link provided in the email and enter the validation code, thus proving domain control.
The list of acceptable email addresses for any given domain are:
When ordering a certificate through Sectigo’s web-interface
The web-interface certificate request process will default to offering email challenge-response DCV.
When ordering a certificate through Sectigo’s API
Once the CSR is received from the customer, the FQDN of the common name (CN) from the CSR must be extracted. The DecodeCSR API can be used, or any other method you have available.
Once a choice is made from the acceptable email address list
Due to our caching of the WHOIS record result
The API call to AutoApplySSL should be made within 24 hours of the GetDCVEmailAddressList API call. A call to GetDCVEmailAddressList is not required if the dcvEmailAddress selection is from the 5 ‘default’ email addresses (i.e. not one extracted from the domain’s WHOIS record). Even if the email address passed to dcvEmailAddress is to be one from the domain’s WHOIS record, we do not insist that you call GetDCVEmailAddressList. Our only requirement is that the email address you choose would be returned from GetDCVEmailAddressList.
note: For multi-domain certificates, please see the information in Section 9.
The unique validation code is only valid for 30 days. I.e. any attempt to use the unique validation code more than 30 days after it was created will fail.
HTTP Based DCV
HTTP based DCV requires that a HTTP server be running on port 80 or that an HTTPS server be running on port 443 of the Authorization Domain Name. We follow CNAMEs when completing HTTP based DCV. We look for the file at every valid Authorization Domain, i.e. we start with the FQDN and then we will strip one or more labels from left to right in the FQDN and will look for the file on each intermediate domain.
Two hashes of the CSR are generated before submission to Sectigo. A plain text file is created on the HTTP/S server of the Authorization Domain Name, with one hash as the filename, and one hash within the text file itself. We call this text file the Request Token. The content of the Request Token is described in more detail in sections 7 and 8, below.
example: A CSR is generated with the CN=www.example.com
c9c863405fe7675a3988b97664ea6baf442019e4e52fa335f406f7c5f26cf14f sectigo.com
http://example.com/.well-known/pki-validation/C7FBC2039E400C8EF74129EC7DB1842C.txt
When ordering a certificate through Sectigo’s web-interface
The hash values are calculated and presented via the web-interface during the order process. They are on the same page as the DCV email-address options. Both the MD5 and SHA-256 hash values of the CSR are shown, and must be saved to the file served from your HTTP server as above before continuing with the order.
When ordering a certificate through Sectigo’s API
Generate the hashes from the CSR before the order is submitted to Sectigo. The hashes MUST be generated from the DER-encoded (i.e. binary) version of the CSR – not the base64 PEM encoded version. Variations in the PEM encoding can cause differing hash values, whereas the hashes of the DER encoded version will remain constant. The file must be created using the UPPERCASE formatting of the MD5 hash, as most HTTP servers are case-sensitive. The Sectigo CA system will only look for the UPPERCASE hash filename. The file must be created with a .txt extension. The SHA-256 hash within the file is case-insensitive.
When the AutoApplySSL call is made
An additional parameter must be specified to indicate use of HTTP/S based DCV. This parameter is called ‘dcvMethod’ and must be set to the UPPERCASE value: HTTP_CSR_HASH for HTTP on port 80 or HTTPS_CSR_HASH for HTTPS on port 443.
note: For multi-domain certificates, please see the information in Section 9 (Notes).
DNS CNAME Based DCV
Also see Alternative Methods of Domain Control Validation (DCV) Quick Summary CNAME
DNS CNAME based DCV requires the creation of a unique CNAME record, pointed back to Sectigo. We look for the CNAME at every valid Authorization Domain, i.e. we start with the FQDN and then we will strip one or more labels from left to right in the FQDN and will look for the CNAME on each intermediate domain.
example: for a certificate request for an FQDN of *.mail.internal.example.com, we would look for the CNAME in these places and in this order:
mail.internal.example.com internal.example.com example.com
The format of the CNAME will be:
‘_’ <MD5 hash>.Authorization Domain Name CNAME <SHA-256 hash>.[<uniqueValue>.]sectigo.com
note the leading underscore at the start of the MD5 hash.
example: A CSR is generated with the CN=www.example.com
The CSR is hashed using both the MD5 and SHA-256 hashing algorithms.
MD5: c7fbc2039e400c8ef74129ec7db1842c SHA-256: c9c863405fe7675a3988b97664ea6baf442019e4e52fa335f406f7c5f26cf14f
To perform DNS CNAME based DCV, the following DNS CNAME record may be created before submitting the order:
_c7fbc2039e400c8ef74129ec7db1842c.example.com CNAME c9c863405fe7675a3988b97664ea6baf.442019e4e52fa335f406f7c5f26cf14f.sectigo.com
Then the request is submitted to Sectigo, the presence of this CNAME DNS record is checked, and if found, domain control is proven.
When ordering a certificate through Sectigo’s web-interface
The hash values are calculated and presented via the web-interface during the order process. They are on the same screen as the DCV email-address options. Both the MD5 and SHA-256 hash values of the CSR are shown, and must be added to DNS as a CNAME record as the above instructions show before continuing with the order.
When ordering a certificate through Sectigo’s API
The hashes are generated from the CSR before the order is submitted to Sectigo. The hashes MUST be generated from the DER-encoded (i.e. binary) version of the CSR – not the base64 PEM encoded version. Variations in the PEM encoding can cause differing hash values, whereas the hashes of the DER encoded version will remain constant. The DNS CNAME record is then created in the format above.
When the AutoApplySSL call is made,
An additional parameter must be specified to indicate use of CNAME based DCV. This parameter is called ‘dcvMethod’ and must be set to the UPPERCASE value ‘CNAME_CSR_HASH’.
note: For multi-domain certificates, please see the information in Section 9 (Notes).
Request Tokens
A Request Token is the pieces of text that we ask you to put in a file on your webserver, or in a DNS response, to indicate to us that this server really is under your control.
There are 2 pieces of information that are always in a Sectigo validation token and, if you’re a high-volume user or if you reuse public keys a lot then there will probably be a third.
1. (required) The SHA-256 hash of your PKCS#10 CSR.
The hash MUST be generated from the DER-encoded (i.e. binary) version of the CSR – not the base64 PEM encoded version. Variations in the PEM encoding can cause differing hash values, whereas the hashes of the DER encoded version will remain constant. You MUST use a hex (base 16) representation of the hash.
2. (required) the string ‘sectigo.com’
This isn’t just because we like to see our name in lights. This ensures that the Request Token has been generated for Sectigo to validate and thereby helps to prevent a possible replay attack on the validation process.
3. (optional) uniqueValue
This is an alphanumeric value that may be up to 20 characters long. It is generated by you, the applicant, and you will need to pass this same uniqueValue to us when you submit the CSR.
It is not permissible to re-use the same Request Token for more than one certificate.
This means that a subsequent order, e.g. a renewal, for a certificate which uses exactly the same CSR as the original order will fail.
There are several ways that you can ensure that each CSR (and therefore each Request Token) is unique.
example: a challenge password may be included in the CSR as an attribute.
Format of Request Tokens and examples
note content of the Request Token is defined in the prior section in this document, section 7 “Request Tokens”. In the following examples the MD5 hash value is always hex encoded and must always be upper-cased.
HTTP based DCV when using HTTP based DCV,
The URL to be checked is formed in this way: http[s]://<Authorization Domain Name>/.well-known/pki-validation/<MD5 hash>.txt
example: http://example.com/.well-known/pki-validation/C7FBC2039E400C8EF74129EC7DB1842C.txt might contain: c9c863405fe7675a3988b97664ea6baf442019e4e52fa335f406f7c5f26cf14f sectigo.com 10af9db9tu
note that third line (10af9db9tu), the optional uniqueValue. If you’re not supplying a uniqueValue then omit that third line.
DNS CNAME based DCV when using DNS CNAME based DCV,
note: a hex (base-16) encoded SHA-256 hash will not fit in a single DNS label because it is too long.
The SHA-256 hash should therefore be split into two labels, each 32 characters long.
example: 1
using hex (base-16) encoding, and splitting the SHA-256 hash into two labels (i.e. inserting a ‘.’
In the middle of the SHA256 hash value), a DNS record may be setup as:
_c7fbc2039e400c8ef74129ec7db1842c.example.com. CNAME c9c863405fe7675a3988b97664ea6baf.442019e4e52fa335f406f7c5f26cf14f.sectigo.com.
example: 2
using hex (base-16) encoding, and splitting the SHA-256 hash into two labels (i.e. inserting a ‘.’
In the middle of the SHA256 hash value), and including a uniqueValue, a DNS record may be setup as:
_c7fbc2039e400c8ef74129ec7db1842c.example.com. CNAME c9c863405fe7675a3988b97664ea6baf.442019e4e52fa335f406f7c5f26cf14f.10af9db9tu.sectigo.com.
Notes
All certificate types (single, wildcard, MDC/UCC) can be validated with any of the available DCV mechanisms. Multi-domain certificates can use a different mechanisms for each FQDN in the request.
Re-issuing Re-issues of the certificates require re-validation.
Re-sending DCV Emails
www. sub-domains
Multi-domain certificates
You can remove some FQDNs from the certificate if they are unable to be validated, and issue the certificate with only the domains validated to that point.
Multi-domain certificate API Details
This parameter accepts a list of email addresses to use for DCV.
There must be one email address per FQDN in the ‘domainNames’ parameter, and they must be in exactly the same order.
Unlike single certificate orders via the API, our system will not reject orders because of incorrect DCV email addresses.
note that our system can only ‘see’ email addresses on a WHOIS lookup that is from the command-line. Email addresses visible from web-based WHOIS queries, or any that require human challenge-response systems (e.g. CAPTCHAS) will not be usable by our system, and the order will sit awaiting verification until you login and update the DCV email address via the web-interface.
Our system will attempt to send as few emails as possible.
For each domain in the ‘domainNames’ parameter, in order, you can specify one of the following:
In addition, if you wish to have all the domains validated by one of the alternative (HTTP or HTTPS or DNS CNAME) mechanisms, then simply pass a single value for the ‘dcvEmailAddresses’ parameter of: