This site is an archive and is no longer updated.
    Back to Guides
    Windows ADCS

    ADCS Naming Conventions

    The decisions that outlive your deployment

    12 min
    LinkedInX
    ADCS naming conventions — CA hierarchy, templates, and URL naming decisions

    Bad naming in ADCS doesn't break things immediately. It breaks things two years later, at 2am, when someone is staring at a CRL Distribution Point URL that points to a server that no longer exists, with a hostname that made sense in 2021.

    This guide covers the five naming decisions that outlive every ADCS deployment: CA hierarchy names, certificate template names, subject field conventions, CRL/AIA URLs, and Active Directory object names. Get these right once and your PKI survives audits, org restructures, and the inevitable "we need to migrate everything" project.

    Watch: ADCS Naming Conventions

    CA Hierarchy Names

    Your CA display name — the CN in its own certificate — is permanent. It gets embedded into every certificate it issues, into CRL files, into AIA extensions. You cannot rename a CA without replacing it entirely.

    The pattern that works:

    TierPatternExample
    Root CA[ORG]-Root-CAAcme-Root-CA
    Policy CA (if used)[ORG]-Policy-CAAcme-Policy-CA
    Issuing CA[ORG]-Issuing-CA-[N]Acme-Issuing-CA-1

    Why the sequence number on Issuing CAs: You will eventually add a second issuing CA. Naming the first one Acme-Issuing-CA (no number) means you'll either rename it later (you can't) or end up with Acme-Issuing-CA and Acme-Issuing-CA-2 forever. Start with -1.

    What to avoid:

    • ✕
      Server hostnames in CA names — CORPCA01-Root-CA ties your CA identity to a machine. When the server is decommissioned, the name lives on in every issued cert.
    • ✕
      Environment labels in Root CA names — Acme-Dev-Root-CA signals a throwaway PKI. Root CAs don't belong to environments; they're organizational trust anchors.
    • ✕
      Abbreviations that won't survive headcount changes — ACME-CORP-CA is fine. ACMECORPNA-WESTDIV-PKI-CA is the naming equivalent of an org chart that was redrawn six months after deployment.

    Certificate Template Names

    Template names appear in certificate requests, audit logs, enrollment policy responses, and the AD schema. A template named WebServer tells you nothing at 2am. A template named Acme-WebServer-2Y tells you the issuer, purpose, and validity in one glance.

    The pattern that works:

    [ORG]-[Purpose]-[Validity]
    TemplateName
    Web server TLSAcme-WebServer-2Y
    Client authenticationAcme-ClientAuth-1Y
    Code signingAcme-CodeSign-3Y
    S/MIME userAcme-UserSMIME-1Y
    Domain controller authAcme-DomainController-2Y

    Validity shorthand: 1Y = 1 year, 2Y = 2 years, 90D = 90 days. Use days for short-lived cert templates.

    The Display Name vs. Template Name distinction

    ADCS has two names — the template name (used in AD, enrollment requests, scripts) and the display name (shown in the UI). Keep them identical. Diverging them creates confusion when scripting enrollment or reading audit logs.

    What to avoid:

    • ✕
      Copying default Microsoft template names — Templates like WebServer, User, Computer are fine as starting points but should be duplicated and renamed before use. Publishing modifications to default templates creates upgrade and audit problems.
    • ✕
      Version numbers in template names — Acme-WebServer-2Y-v2 signals that v1 is still floating around. Use template versioning (Major/Minor version in the template properties) instead of encoding version in the name.
    • ✕
      Org unit or department labels — Acme-Finance-WebServer-2Y creates template sprawl. One template per purpose/validity combination; use certificate policies or issuance requirements to scope enrollment, not names.

    Subject Field Conventions

    The subject fields in your issued certificates — CN, O, OU, L, ST, C — are governed partly by CA/Browser Forum baseline requirements for publicly trusted certs, but for internal PKI you have more latitude. The problem is that "more latitude" usually means "inconsistency that breaks automated tooling."

    The pattern that works:

    FieldUseExample
    CNPrimary identifier only — FQDN for TLS, UPN for users, hostname for machinesweb01.acme.internal
    OLegal org name — static, rarely changesAcme Corporation
    OULeave blank or omit—
    L, ST, CJurisdiction fields — include if required by policy, omit otherwiseAtlanta, Georgia, US
    SANEverything the cert actually needs to identify — all FQDNs, IPs, UPNsweb01.acme.internal, web01

    On OU:

    OU was historically used to encode department, environment, or function (OU=Engineering, OU=Production). This creates two problems: (1) AD OU structures change; cert subjects don't. (2) Automated tooling — CLM platforms, SIEM systems, monitoring tools — often keys on OU values and breaks when they're inconsistent. If you need to encode environment or function context, use certificate policies or custom OIDs, not OU.

    The SAN is the identity — not the CN: For TLS certificates, browsers and TLS libraries validate against SAN, not CN. CN is legacy. Always populate SAN. For multi-name certs, the CN should match the primary SAN exactly.

    CRL Distribution Points and AIA URLs

    This is the naming decision with the longest blast radius. CRL Distribution Points (CDP) and Authority Information Access (AIA) URLs get embedded in every certificate you issue. They need to be resolvable for the lifetime of every issued cert — which for a Root CA certificate can be 20+ years.

    The pattern that works:

    http://pki.acme.com/crl/[CAName].crl
    http://pki.acme.com/aia/[CAName].crt

    Critical rules:

    1

    Use a dedicated, stable hostname

    pki.acme.com, not CORPCA01.acme.com. The CA server will eventually be decommissioned or renamed. The CRL/AIA hostname must survive independently of any specific server.

    2

    HTTP only for CRL/AIA

    HTTPS creates a chicken-and-egg problem: the cert needed to validate the HTTPS connection may chain to the same CA whose CRL you're trying to fetch. Use plain HTTP for CDP and AIA.

    3

    File names should match CA names

    Acme-Issuing-CA-1.crl is unambiguous. IssuingCA.crl breaks when you add a second issuing CA.

    4

    Internal and external resolution

    If you issue certs used outside your network, pki.acme.com must resolve externally. Many internal CAs issue certs that end up on internet-facing systems. Plan for external resolution from day one.

    What to avoid:

    • ✕
      UNC paths in CDP — \\CORPCA01\CertEnroll\... works inside your network and nowhere else. Any cert that leaves the building will fail revocation checks.
    • ✕
      The CA server's IP address — IPs change. FQDNs are the minimum; dedicated stable FQDNs are the requirement.

    Active Directory Object Names

    ADCS stores several object types in AD under CN=Public Key Services,CN=Services,CN=Configuration,DC=.... Getting these names right matters for scripting, auditing, and Group Policy enrollment.

    Key AD objects and naming conventions:

    Object TypeContainerNaming PatternExample
    Enrollment ServicesCN=Enrollment ServicesMatch CA display name exactlyAcme-Issuing-CA-1
    Certificate TemplatesCN=Certificate TemplatesMatch template name exactlyAcmeWebServer2Y
    NTAuthCertificatesCN=NTAuthN/A — single object—
    AIA/CDP containersCN=AIA, CN=CDPMatch CA nameAcme-Issuing-CA-1

    The hyphen problem

    AD stores template names without hyphens in some contexts. Acme-WebServer-2Y becomes AcmeWebServer2Y in certain enrollment policy responses. Test your template name in an actual enrollment request before finalizing it. Whatever resolves consistently in enrollment is your canonical name.

    PKI container in AD

    When you install ADCS, the default container name is Public Key Services. Don't rename it. Every ADCS tool, script, and documentation reference assumes this path. The containers underneath it — Certificate Templates, Enrollment Services, KRA, OID — also follow Microsoft defaults. Custom naming here creates problems with every tool that introspects AD PKI objects.

    Pre-Deployment Checklist

    Before you stand up your first CA, lock in these decisions. Your progress is saved automatically.

    0 of 7 complete

    Want a naming convention generator that builds these for you?

    Related Guides