DV SSL certificate lifecycle

The DV certificate lifecycle consists of these main steps:

  • Prepare DV certificate request
  • Submit DV certificate order
  • (Optional) Cancel certificate order
  • Complete domain control validation (DCV)
  • Check order status
  • Download issued certificate

Once a certificate has been issued, you can perform any of these actions:

  • Reissue a certificate
  • Revoke a certificate
Overall DV certificate lifecycle

Prepare DV certificate request

In order to construct your request body and submit an order request, you need to collect some key pieces of information:

  • Domain name(s) to be secured by the certificate
  • Certificate signing request (CSR) generated on the server where the certificate will be installed
  • Validity period of the certificate (amount of time the certificate should be valid)
  • DCV method to use when demonstrating control over the domain(s)

Domain name(s)

Once you've collected the domain name(s) to be secured by the certificate, they should be entered in one of two request body parameters.

Parameter Type Description
common_name string Primary domain to be secured by the certificate.
dns_names array Any additional domains to be secured by the certificate.
Adding domains to this parameter may incur additional costs.

All DV certificate orders include a 'plus' feature that allow you to cover both the root and www subdomain of your domain at no added cost. When constructing your request body, add the base domain ([your-domain].com) to the common_name parameter and then the other version of the domain (www.[your-domain].com) to the dns_names array.

Certificate signing request (CSR)

The CSR should be generated on the server where the certificate will be installed. Once generated, enter the PEM formatted CSR in the csr parameter of the request body. See Create a CSR (Certificate Signing Request) for additional information.

Validity period

When ordering a certificate, you are required to specify the certificate validity period. You can use any of these parameters to determine how long a certificate will be valid.

Parameter Type Description
validity_years int Use this parameter when specifying certificate validity in years.
Allowed values: 1, 2
validity_days int Use this parameter when specifying certificate validity in days.
custom_expiration_date string Use this parameter to specify a specific date the certificate should expire.
Format: yyyy-MM-dd

If more than one validity parameter is included in the request body, we prioritize them as follows: custom_expiration_date > validity_days > validity_years.

DCV method

Email DCV is the default DCV method used for DV certificate orders. If desired, you can change the default DCV method by including the dcv_method parameter in the request body. The dcv_method parameter accepts these values:

Value Description
email Sends DCV emails to any email address (e.g., administrator and technical contacts) we find in the domain’s WHOIS record and to the five constructed email addresses for the domain (admin, administrator, webmaster, hostmaster, and postmaster
@[domain_name]).
When using this method, you can define a specific email scope by including the dcv_emails object.
dns‑txt‑token Returns a random value token in the response body to be added to a DNS TXT record on the domain. Using this method required the ability to modify domain DNS records.
http‑token Returns a random value token in the response body to be placed in a .txt file on the website to be secured by the certificate. Using this method requires the ability to upload files to the web server.

See Domain Control Validation (DCV) Methods for more information about different DCV methods and how to complete them.

(Optional) dcv_emails array

When using the email DCV method, it's possible to specify the email addresses that should be used when sending the DCV emails. To do this, include the dcv_emails array in the request body and add an entry for each domain on the order.

When using this parameter, entered email addresses must be specified in the domain’s WHOIS record or be one of the default email addresses for the domain (defined by industry standards as: admin, administrator, webmaster, hostmaster, and/or postmaster @[domain_name]). In addition, we will only send the DCV email to the addresses specified.

For example, if you specify john.doe@[domain_name], we will not send DCV emails to any of the default email addresses. Or if you specify admin@[domain.com], we will not send the DCV email to john.doe@[domain_name].

Example dcv_emails array
"dcv_emails": [
  { 
    "dns_name": "example.com",
    "email_domain": "example.com",
    "email": "hostname@example.com"
  },
  { 
    "dns_name": "my.example.com",
    "email_domain": "example.com",
    "email": "admin@example.com"
  },
  { 
    "dns_name": "another.example.com",
    "email_domain": "example.com",
    "email": "admin@example.com"
  }
]

Submit DV certificate order

Now that you've collected the above information, you're ready to construct your request body and submit your order request. This is done with a POST to the Order DV SSL endpoint.

A successful POST to this endpoint will result in a 201 Created HTTP response code. The response body will include some key pieces of information that can be used to check the status of the order as well as download the certificate once it has been issued.

  • id – Order ID used to check order details and perform DCV actions.
  • certificate_id – Certificate ID used to download the issued certificate.
  • dcv_random_value – Randomly generated token used for dns-txt-token and http-token DCV methods. This token expires after 30 days.

For more info about each parameter used in the request body, see the Order DV SSL – Request parameters table.

cURL
curl -X POST \
  'https://www.digicert.com/services/v2/order/certificate/{{dv_ssl_certificate_id}}' \
  -H 'Content-Type: application/json' \
  -H 'X-DC-DEVKEY: {{api_key}}' \
  -d '{
    "certificate": {
        "common_name": "example.com",
        "dns_names": [
            "sub.example.com",
            "app.example.com"
        ],
        "csr": "<csr>",
        "server_platform": {
            "id": 45
        },
        "signature_hash": "sha256",
        "organization_units": [
            "Accounting department"
        ]
    },
    "validity_years": 2,
    "comments": "Message for the approver",
    "disable_renewal_notifications": true,
    "dcv_method": "email",
    "locale": "en",
    "dcv_emails": [
      { 
        "dns_name": "example.com",
        "email_domain": "example.com",
        "email": "hostname@example.com"
      },
      { 
        "dns_name": "sub.example.com",
        "email_domain": "example.com",
        "email": "admin@example.com"
      },
      { 
        "dns_name": "app.example.com",
        "email_domain": "example.com",
        "email": "admin@example.com"
      }
    ],
    "payment_method": "balance",
    "custom_fields": [
        {
            "metadata_id": 11,
            "value": "Invoice #00001"
        }
    ]
}'
201 Created (email)
{
  "id": 112233,
  "certificate_id": 123456
}
201 Created (dns-txt-token or http-token)
{
  "id": 112233,
  "certificate_id": 123456,
  "dcv_random_value": "icru1984rnekfj"
}

After submitting the order, you can use the Order info endpoint to get order details and review the submitted information.

(Optional) Cancel certificate order

After placing an order, there may be times when you need to cancel it. To cancel an order, you need to change the status from pending to canceled. This is done with a PUT to the Update order status endpoint.

A successful PUT to this endpoint returns a 204 No Content HTTP response.

The status parameter only allows a value of CANCELED (case sensitive).

cURL
curl -X PUT \
  'https://www.digicert.com/services/v2/order/certificate/{{order_id}}/status' \
  -H 'Content-Type: application/json' \
  -H 'X-DC-DEVKEY: {{api_key}}' \
  -d '{
    "status": "CANCELED",
    "note": "Message about the cancellation."
}'
204 No Content
// empty

Complete domain control validation (DCV)

With the DV order submitted, you now need to prove control over the domains on the order.

Regardless of the DCV method chosen, you must complete the DCV for each domain to be secured by the certificate. For example, if dns-txt-token method was chosen, you must create a DNS TXT record for each domain on the order.

Email DCV method

If the dcv_emails array was included in the response body, then DCV emails are sent to the addresses defined in the array. Otherwise, DCV emails are sent to these addresses:

  • All email addresses found in the domain's WHOIS record
  • These five constructed email addresses:
    • admin@[domain_name]
    • administrator@[domain_name]
    • webmaster@[domain_name]
    • hostmaster@[domain_name]
    • postmaster@[domain_name]

To complete email DCV, in your email client inbox locate the email with the subject [Action Required] Approve Certificate Request for [yourdomain] {Order #} and follow the instructions.

If you need to resend the DCV emails for a submitted order, you can use the DV SSL: Resend emails endpoint (replace the {{order_id}} placeholder with the order ID returned in the response body when you submitted the order).

DNS TXT DCV method

If you no longer have the random value or need to generate a new one, you can use the DV SSL: Generate DCV token endpoint, replacing the {{order_id}} placeholder with the order ID that was included in the response body when you submitted the order.

Follow these steps to complete DNS TXT DCV and demonstrate control over your domains:

  1. Copy the dcv_random_value that was returned in the response body when the order was placed.
  2. Go to your DNS provider’s site and create a new TXT record.
  3. In the TXT Value field, enter the random value you copied.
  4. Host field
    1. Base domain (for example, [yourdomain].com)
      Are you validating the base domain? Leave the Host field blank or add the @ symbol (depending on your DNS provider requirements).
    2. Subdomain (for example, [your.domain].com)
      Are you validating a subdomain? In the Host field, add the subdomain you are validating.
  5. In the record type filed (or equivalent), select TXT.
  6. Select a Time-to-Live (TTL) value or use your DNS provider’s default value.
  7. Save the record.
  8. Repeat the above steps for each domain on the order.

Once you've added the DNS TXT record for all domains on the order, you're ready to have us verify the TXT records (see Check DCV).

HTTP token DCV method

Follow these steps to complete HTTP token DCV and demonstrate control over your domains:

  1. Copy the dcv_random_value that was returned in the response body when the order was placed.
  2. In your preferred text editor, paste the random value you copied.
  3. Save the file with a filename of fileauth.txt.
  4. On your web server, upload the fileauth.txt file to this location: [yourdomain]/.well-known/pki-validation/fileauth.txt.

Perform DCV check

With the random token added to the DNS TXT record (DNS TXT method) or the fileauth.txt uploaded to the specified location (HTTP DCV method) for each domain on the order, you're ready to perform a DCV check. This is done with a PUT to the DV SSL: Check DCV endpoint.

A PUT to this endpoint returns four possible responses:

  • 200 OK – DCV completed successfully
  • 400 Bad Request – There are three possible error codes with this response:
    • invalid_dns_txt – DNS TXT record could not be found or contains the wrong random value for one or more domains. Verify that all domains on the order have the appropriate DNS TXT record with the correct random value.
    • file_random_value_not_foundfileauth.txt could not be found or contains the wrong random value for one or more domains. Verify that for all domains on the order the file is in the correct directory, is publicly available, and contains the correct random value.
    • invalid_dns_method – The DCV method for the order is set to email. Either locate the sent email and complete the DCV instructions or change the DCV method.
cURL
curl -X PUT \
  'https://www.digicert.com/services/v2/order/certificate/{{order_id}}/check-dcv' \
  -H 'Content-Type: application/json' \
  -H 'X-DC-DEVKEY: {{api_key}}'
200 OK
{
  "order_status": "pending",
  "certificate_id": 123456,
  "dcv_status": "valid"
}
400 (dns-txt-token)
{
  "errors": [
    {
      "code": "invalid_dns_txt",
      "message": "Could not find a valid TXT record for one or more domains."
    }
  ]
}
400 (http-token)
{
  "errors": [
    {
      "code": "file_random_value_not_found",
      "message": "Could not find the random value at the expected file location for one or more domains."
    }
  ]
}
400 (email)
{
  "errors": [
    {
      "code": "invalid_dns_method",
      "message": "An error occurred while processing your request."
    }
  ]
}

Check order status

After submitting your order and completing the DCV for each domain, you'll want to know when the order status changes and the certificate is ready to download. The best way to do this is with a GET to the Status change list endpoint.

A GET to this endpoint returns three possible responses:

  • 200 OK (orders array) – The orders array lists all orders that have changed status in the specified timeframe. When your order's status changes from pending to issued, it will appear in the list. If multiple orders are returned, use either the order ID or certificate ID to locate the order.
  • 200 OK (empty object) – A response with an empty object ({}) means no orders have had a status change in the specified timeframe. Either increase the timeframe or wait to send another request.
  • 400 Bad Request – A response with the time_frame_too_long error code means the timeframe specified in the URL query string exceeds the maximum value. Reduce the timeframe to a value less than 10080 minutes (7 days).

cURL
curl -X GET \
  'https://www.digicert.com/services/v2/order/certificate/status-changes?minutes=10' \
  -H 'Content-Type: application/json' \
  -H 'X-DC-DEVKEY: {{api_key}}'
200 OK
{
  "orders": [
    {
      "order_id": 112233,
      "certificate_id": 123456,
      "status": "issued"
    }
  ]
}
200 OK (no orders found)
{}
400 Bad Request
{
  "errors": [
    {
      "code": "time_frame_too_long",
      "message": "An error occurred while processing your request."
    }
  ]
}

Download DV certificate

Once the order status changes from pending to issued, your certificate is ready to be downloaded. Depending on your needs, there are four endpoints you can use to download your certificate:

Reissue DV certificate

Reissuing a certificate allows you to add, remove, or swap domain names, update the CSR, or change the signature hash of a certificate without submitting a new order. A reissued certificate will have a new certificate ID but the same order ID. After a reissue is approved, a new certificate is issued and needs to be reinstalled.

When reissuing a certificate, you need to provide this information:

  • Common name
  • SANs (include both the current SANs in the dns_names parameter as well as any additional SANs to be secured)
  • CSR (to get and reuse the current CSR, use the Request info endpoint)
  • Server platform ID (options listed here)

Even if some of the above details are staying the same, you still need to include it in the reissue request.

Note that certain changes, such as adding additional SANs ('dns_names') may incur additional costs.

It may be necessary to perform DCV for some or all of the domains.

The Reissue certificate endpoint accepts the following optional parameters:

  • comments – Adds a message to the request for the approver.
  • skip_approval ­‑ Allows the request to be immediately submitted for validation, bypassing the need to approve the reissue request.
cURL
curl -X POST \
  'https://www.digicert.com/services/v2/order/certificate/{{order_id}}/reissue' \
  -H 'Content-Type: application/json' \
  -H 'X-DC-DEVKEY: {{api_key}}' \
  -d '{
  "certificate": {
    "common_name": "example.com",
    "dns_names": [
        "sub.example.com"
    ],
    "csr": "<csr>",
    "server_platform": {
      "id": 2
    },
    "signature_hash": "sha256"
    "skip_approval": true
  }
}'
201 Created
{
  "id": 112233,
  "requests": [
    {
      "id": 332211
    }
  ]
}
201 skip_approval
{
  "id": 112233,
  "certificate_id": 111112
}

After a reissue is complete, download the new certificate (see Download DV Certificate).

You can get a complete reissue history for an order by using the List reissues endpoint.

Revoke DV certificate

Once your order is issued, you can submit a revoke request if needed.

All revocation requests must be approved by an administrator in CertCentral before DigiCert will revoke the certificate. This approval step is required and cannot be skipped.

You can revoke a certificate using one of two endpoints:

Both endpoints use the same request body parameters.

After submitting the revocation request, the request needs to be approved my an administrator using the Update request status endpoint.

cURL
curl -X PUT \
  'https://www.digicert.com/services/v2/certificate/{{certificate_id}}/revoke' \
  -H 'Content-Type: application/json' \
  -H 'X-DC-DEVKEY: {{api_key}}' \
  -d '{
  "comments": "I no longer need this cert."
}'
201 Created
{
  "id": 1,
  "date": "2016-02-10T17:06:15+00:00",
  "type": "revoke",
  "status": "pending",
  "requester": {
    "id": 14,
    "first_name": "John",
    "last_name": "Smith",
    "email": "john.smith@digicert.com"
  },
  "comments": "I no longer need this cert."
}