Introduction

The Bulk Revocation process in ADSS Server requires users to provide certificate details in a structured file so that multiple revocations can be carried out automatically. To achieve this, a Revocation Details CSV File is used. This document explains how to correctly create and format that file, ensuring that the revocation process runs smoothly and remains compliant with the Mozilla Root Store Policy and CA/Browser Forum standards.


Purpose of the CSV File

Since bulk revocation depends on accurate input, the CSV file plays a central role in preparing the data for processing. It ensures certificate information is properly structured, validated, and ready for execution. With this approach, ADSS Server can efficiently handle large-scale revocations without requiring manual intervention. 


The CSV file is required for:

  • Preparing certificate revocation data in a structured, validated Excel sheet
  • Executing large-scale revocations for thousands or millions of certificates efficiently


CSV File Structure

To enable the system to correctly interpret the data, the CSV file must follow a fixed structure. Each column serves a specific purpose, and the headers must be written exactly as expected by ADSS Server. This structure ensures that every certificate record is processed consistently and accurately. 


The CSV file must contain the following columns. Column headers are case-sensitive, and it is mandatory to use uppercase for consistency.


The columns must appear in the order listed below:


Column Name

Mandatory/Optional

Description

ALIAS

Optional (one of ALIAS, SERIAL_NO, CLIENT_ID must be provided)

Unique alias of the certificate in ADSS Server.

SERIAL_NO

Optional (one of ALIAS, SERIAL_NO, CLIENT_ID must be provided)

The serial number of the certificate to be revoked.

CLIENT_ID

Optional (one of ALIAS, SERIAL_NO, CLIENT_ID must be provided)

Unique identifier for the client. If this is the only field provided, all certificates for this client will be revoked for the selected CA.

REVOCATION_DATE

Optional

Date and time when the revocation will take effect. If not provided, the current system date and time will be used.
Format: DD/MM/YYYY HH:mm:ss

REVOCATION_REASON

Optional

This field specifies the reason why a certificate is being revoked. If no value is provided, it will automatically default to cessationOfOperation. For a complete list of valid revocation reason codes, please refer to the section below.

INVALIDITY_DATE

Optional

Date and time from which the certificate is considered invalid. If not provided, the current system date and time will be used.
Format: DD/MM/YYYY HH:mm:ss

HOLD_INSTRUCTION_CODE

Conditional

This field is required only when the REVOCATION_REASON is set to certificateHold. If it is not provided in such cases, the system will automatically default to id-holdinstruction-none. A detailed list of valid hold instruction codes is provided in the section below.


Rules and Validations

While the file structure lays the foundation, applying strict rules and validations ensures that the data is both correct and usable. These checks prevent errors during processing and help maintain the reliability of the revocation process. The following rules must be followed when creating the CSV file:


Mandatory Identifiers

To uniquely identify each certificate, at least one identifier must be included in each row. Without these identifiers, the system cannot match the revocation request to the correct certificate.

  • At least one of the following must be provided per row:
    • ALIAS
    • SERIAL_NO
    • CLIENT_ID
  • If all three are missing, the row will be skipped and logged as invalid.
  • For certificates created via Key Manager use KEY_MANAGER as Client ID.
  • For certificates created via Manual Certification use MANUAL as Client ID.
  • If only ALIAS is given for a row and multiple certificates are issued using the same alias for different clients, then all certificates found will be revoked.


Date Rules

Dates determine when the revocation becomes effective and, if provided, when the certificate is considered invalid. If these values are not included, the system defaults to the current date and time, ensuring revocations are not delayed.

  • REVOCATION_DATE and INVALIDITY_DATE are optional.
  • If missing, the current system date and time will be automatically used.
  • Required format:
    DD/MM/YYYY HH:mm:ss
    Example: 27/08/2025 14:30:00


Revocation Reason

A revocation reason explains why a certificate is being revoked. Providing a reason improves auditability and ensures consistency with policy requirements:

  • If REVOCATION_REASON is missing, it will default to:
    cessationOfOperation


Allowed Values for REVOCATION_REASON:


Value

Description

unspecified

No specific reason provided.

keyCompromise

Private key was compromised.

cACompromise

Certificate Authority was compromised.

affiliationChanged

Organization affiliation changed.

superseded

Certificate was replaced by another.

cessationOfOperation

Service or certificate no longer in use (default).

certificateHold

Certificate temporarily suspended.

removeFromCRL

Remove from Certificate Revocation List.

privilegeWithdrawn

Privileges of the certificate were withdrawn.

aACompromise

Attribute Authority compromised.


Hold Instruction Code

In certain cases, such as when a certificate is temporarily suspended, a hold instruction must accompany the revocation reason. This ensures that the system interprets the request correctly.

  • Required only when REVOCATION_REASON = certificateHold.
  • If missing when required, it defaults to:
    id-holdinstruction-none


Allowed Values for REVOCATION_REASON:


Items

Description

id-holdinstruction-none

Default, no additional instruction.

id-holdinstruction-callissuer

Call issuer for further action.

id-holdinstruction-reject

Reject the certificate immediately. 


CSV File Formatting Rules

Proper formatting ensures that the file can be read and processed without errors. Even minor formatting issues, such as extra spaces or blank columns, can cause rows to fail during validation.

  • File must be saved as Microsoft Excel Workbook (.CSV)
  • Column headers must match exactly (case-sensitive, but no spaces or typos allowed).
  • There should be no blank columns between the defined fields.
  • Ensure there are no extra spaces before or after cell values.


Revoke All Certificates for a Specific Client

Sometimes, instead of revoking individual certificates, it may be necessary to revoke all certificates belonging to a specific client. The CSV file supports this by allowing a simple row entry with only the Client ID.

  • Provide a single row with only the CLIENT_ID filled in
  • Leave ALIAS and SERIAL_NO blank.
  • ADSS Server will automatically revoke all certificates associated with that CLIENT_ID for the selected CA.

Example Row:

ALIAS,SERIAL_NO,CLIENT_ID,REVOCATION_DATE,REVOCATION_REASON,INVALIDITY_DATE

,,ClientXYZ,27/08/2025 12:00:00,cACompromise,27/08/2025 12:00:00


Data Quality Checks

To prevent duplicate or invalid entries from causing errors, the system enforces strict quality checks. These checks ensure that each row is unique and all data values meet the required format.

  • Each row must be unique based on a combination of:
    ALIAS + SERIAL_NO + CLIENT_ID
  • No duplicate rows are allowed.
  • Date fields must match the required format.
  • Revocation reason and hold instruction codes must be valid.



Error Handling

Even with structure and rules in place, errors may still occur during upload. To manage this, ADSS Server performs multiple layers of validation and provides detailed error logs. This allows users to quickly identify issues, correct them, and re-submit the file if needed.


Structural Validation

  • Ensure all required columns are present.
  • Verify there are no extra blank columns or mismatched headers.


Field Validation

  • Validate at least one of ALIAS, SERIAL_NO, or CLIENT_ID is present.
  • Check that date fields match the required format (DD/MM/YYYY HH:mm:ss).
  • Ensure REVOCATION_REASON and HOLD_INSTRUCTION_CODE contain only allowed values.


Error Logging

  • Invalid rows will be skipped and recorded in a log.
  • Log includes:
    • Row number
    • Description of the issue