QCecuring - Enterprise Security Solutions

Fix 'The Certificate Template Is Not Available' in AD CS

PKI 15 May, 2026 · 06 Mins read

Fix the AD CS error where certificate templates aren't available for enrollment. Covers template publishing, permissions, version compatibility, and CA type issues with certutil commands.


You’re seeing this when trying to enroll a certificate via MMC, certreq, or auto-enrollment:

The certificate template is not available.
Certificate enrollment for <user/computer> failed to enroll for a <TemplateName> certificate.
The requested certificate template is not supported by this CA.
certreq: The certificate template is not available. 0x80094800
CertEnroll::CX509Enrollment::Enroll: The certificate template is not supported by this CA. 0x80094800

The template exists in Active Directory but enrollment fails. Here’s how to fix it.


Fastest Fix: Check If the Template Is Published

# List all templates published on the CA
certutil -CATemplates

# Look for your template name in the output
# If it's NOT listed, that's your problem — jump to "Publish the Template"

If your template IS listed but enrollment still fails, the issue is permissions or compatibility. Continue below.


Template Enrollment Flow

Flowchart showing top-down process flow


Cause 1: Template Not Published on the CA

What’s happening: The template exists in AD (you can see it in Certificate Templates console) but it hasn’t been added to the CA’s list of templates to issue.

Diagnose:

# List templates the CA is configured to issue
certutil -CATemplates

# List all templates in AD (regardless of CA publishing)
certutil -ADTemplate

# Compare — if your template is in ADTemplate but not CATemplates, it's not published

Fix — publish the template on the CA:

# Method 1: PowerShell (Windows Server 2012+)
Add-CATemplate -Name "YourTemplateName" -Force

# Method 2: certutil
certutil -SetCATemplates +YourTemplateName

# Method 3: GUI
# Open Certification Authority console (certsrv.msc)
# Right-click "Certificate Templates" → New → Certificate Template to Issue
# Select your template → OK

Verify it’s published:

certutil -CATemplates | findstr "YourTemplateName"

If you have multiple CAs, publish the template on the correct one:

# Check which CA the client is targeting
certutil -config - -ping

# Publish on that specific CA
certutil -config "CA-SERVER\CA-Name" -SetCATemplates +YourTemplateName

Cause 2: User/Computer Lacks Enroll Permission

What’s happening: The template is published, but the requesting user or computer doesn’t have the Enroll (or Autoenroll) permission on the template.

Diagnose:

# Check template permissions
# Method 1: PowerShell
$templateName = "YourTemplateName"
$configContext = ([ADSI]"LDAP://RootDSE").configurationNamingContext
$templateDN = "CN=$templateName,CN=Certificate Templates,CN=Public Key Services,CN=Services,$configContext"
$template = [ADSI]"LDAP://$templateDN"
$template.ObjectSecurity.Access | Format-Table IdentityReference, ActiveDirectoryRights, AccessControlType

# Method 2: certutil (shows template details including security)
certutil -ADTemplate $templateName

Fix — grant Enroll permission:

# Using the Certificate Templates MMC snap-in:
# 1. Open certtmpl.msc
# 2. Find your template → Properties → Security tab
# 3. Add the user/group → check "Enroll" (and "Autoenroll" if needed)

# Using PowerShell (DVCS module):
# Grant Enroll to Domain Computers
$templateName = "YourTemplateName"
$configContext = ([ADSI]"LDAP://RootDSE").configurationNamingContext
$templateDN = "CN=$templateName,CN=Certificate Templates,CN=Public Key Services,CN=Services,$configContext"
dsacls $templateDN /G "Domain Computers:CA;Enroll"

Required permissions for enrollment:

PermissionPurpose
ReadSee the template exists
EnrollManually request certificates
AutoenrollAuto-enrollment via GPO

For auto-enrollment, you need BOTH Enroll AND Autoenroll:

# Grant both permissions
dsacls $templateDN /G "Domain Computers:CA;Enroll"
dsacls $templateDN /G "Domain Computers:CA;AutoEnrollment"

Cause 3: Template Version Incompatibility

What’s happening: Version 3 (V3) and Version 4 (V4) templates require specific CA and OS versions. If your CA is too old, it can’t issue these templates.

Template version requirements:

Template VersionMinimum CA OSMinimum Client OS
V1Windows 2000Windows 2000
V2Windows Server 2003Windows XP
V3Windows Server 2008Windows Vista
V4Windows Server 2012Windows 8

Diagnose:

# Check template version
certutil -ADTemplate YourTemplateName | findstr "msPKI-Template-Schema-Version"

# Check CA OS version
certutil -CAInfo | findstr "Server"

# Check CA schema version support
certutil -getreg CA\Version

Fix — if the template version is too high for your CA:

Option 1: Upgrade the CA to a newer Windows Server version.

Option 2: Duplicate the template and set a lower schema version:

# In certtmpl.msc:
# 1. Right-click the V3/V4 template → Duplicate Template
# 2. In the dialog, select "Windows Server 2003" compatibility
#    (this creates a V2 template)
# 3. Configure the duplicate with your settings
# 4. Publish the new V2 template on the CA

Option 3: Check if V3/V4 features are actually needed. If you’re not using key attestation, cryptography settings, or other V3+ features, a V2 template works fine.


Cause 4: Template Has Been Superseded

What’s happening: A newer template supersedes (replaces) your template. When a template is superseded, the old one is no longer available for enrollment.

Diagnose:

# Check if the template is superseded
certutil -ADTemplate YourTemplateName | findstr -i "supersed"

# Or check the Superseded Templates tab in template properties
# certtmpl.msc → Template → Properties → Superseded Templates tab

Fix — remove the supersession:

  1. Open certtmpl.msc
  2. Find the newer template that supersedes yours
  3. Properties → Superseded Templates tab
  4. Remove your template from the list

Or use the superseding template instead:

# Find which template supersedes yours
certutil -ADTemplate | findstr -A5 "YourTemplateName"

# Publish the superseding template if it's not already
Add-CATemplate -Name "NewerTemplateName" -Force

Cause 5: CA Is Standalone (Not Enterprise)

What’s happening: Standalone CAs don’t support certificate templates. Only Enterprise CAs (joined to Active Directory) can issue template-based certificates.

Diagnose:

# Check CA type
certutil -CAInfo | findstr "CA type"

# Enterprise CA shows: "Enterprise Root CA" or "Enterprise Subordinate CA"
# Standalone CA shows: "Standalone Root CA" or "Standalone Subordinate CA"

Fix:

You cannot convert a Standalone CA to an Enterprise CA. Options:

  1. Install a new Enterprise CA alongside the Standalone CA
  2. Use the Standalone CA for manual requests only (submit CSR directly with certreq -submit)
  3. If this is a Root CA, it’s normal for it to be Standalone. Issue certificates from a subordinate Enterprise CA instead.
# For standalone CA, submit requests manually without templates:
certreq -submit -config "STANDALONE-CA\CA-Name" request.csr

Cause 6: Replication Delay

What’s happening: You just created or published the template, but AD replication hasn’t completed to all domain controllers yet.

Diagnose:

# Check AD replication status
repadmin /replsummary

# Force replication
repadmin /syncall /AdeP

# Check if the template exists on the DC the client is using
$clientDC = (Get-ADDomainController -Discover).HostName
certutil -config $clientDC -ADTemplate YourTemplateName

Fix — wait or force replication:

# Force replication across all DCs
repadmin /syncall /AdeP

# Wait 15-30 minutes for large environments

# On the client, clear cached template info
certutil -pulse

# Force the client to re-read templates
gpupdate /force

Complete Diagnostic Script

Run this on the client experiencing the error:

$TemplateName = "YourTemplateName"
$CAConfig = "CA-SERVER\CA-Name"

Write-Host "=== Certificate Template Diagnostic ===" -ForegroundColor Cyan

# 1. Does the template exist in AD?
Write-Host "`n[1] Template exists in AD:" -ForegroundColor Yellow
$adResult = certutil -ADTemplate $TemplateName 2>&1
if ($adResult -match $TemplateName) {
    Write-Host "  OK: Template found in AD" -ForegroundColor Green
} else {
    Write-Host "  FAIL: Template not found in AD" -ForegroundColor Red
    Write-Host "  → Create the template in certtmpl.msc" -ForegroundColor Gray
}

# 2. Is it published on the CA?
Write-Host "`n[2] Template published on CA:" -ForegroundColor Yellow
$caTemplates = certutil -CATemplates 2>&1
if ($caTemplates -match $TemplateName) {
    Write-Host "  OK: Template is published on CA" -ForegroundColor Green
} else {
    Write-Host "  FAIL: Template not published on CA" -ForegroundColor Red
    Write-Host "  → Run: Add-CATemplate -Name '$TemplateName'" -ForegroundColor Gray
}

# 3. Check permissions
Write-Host "`n[3] Current user/computer permissions:" -ForegroundColor Yellow
Write-Host "  Current user: $env:USERDOMAIN\$env:USERNAME" -ForegroundColor Gray
Write-Host "  Current computer: $env:COMPUTERNAME" -ForegroundColor Gray
Write-Host "  → Verify Enroll permission in certtmpl.msc → Security tab" -ForegroundColor Gray

# 4. Template version
Write-Host "`n[4] Template schema version:" -ForegroundColor Yellow
$versionInfo = certutil -ADTemplate $TemplateName 2>&1 | findstr "msPKI-Template-Schema-Version"
Write-Host "  $versionInfo" -ForegroundColor Gray

# 5. CA type
Write-Host "`n[5] CA type:" -ForegroundColor Yellow
$caInfo = certutil -CAInfo 2>&1 | findstr "CA type"
Write-Host "  $caInfo" -ForegroundColor Gray

Write-Host "`n=== Diagnostic Complete ===" -ForegroundColor Cyan

FAQ

I published the template but users still can’t see it in the enrollment wizard. Why?

After publishing, clients need to refresh their template cache. Run gpupdate /force on the client, or wait for the next Group Policy refresh cycle (90 minutes by default). Also verify the user has at least Read and Enroll permissions on the template. If using the Certificates MMC snap-in, close and reopen it after the GPO refresh.

Can I publish the same template on multiple CAs?

Yes, and this is recommended for redundancy. Publish the template on all Enterprise CAs that should issue it: Add-CATemplate -Name "TemplateName" on each CA. Clients will automatically select an available CA. Ensure all CAs have the same template version and that the template permissions are consistent.

How do I find which templates are available for my user account?

Run certutil -Template from the user’s session. This shows only templates the current user has Enroll permission for AND that are published on a reachable CA. Compare with certutil -CATemplates (shows all published templates regardless of permissions) to identify permission gaps.

The template shows in certutil -CATemplates but enrollment still fails with “not supported.” What else could be wrong?

Check these less obvious causes: (1) The template’s cryptographic provider (CSP/KSP) isn’t available on the client. (2) The template requires a minimum key size the client can’t generate. (3) The template has issuance requirements (CA manager approval, authorized signatures) that aren’t met. (4) The template’s validity period exceeds the CA certificate’s remaining validity. Check template properties → Request Handling and Issuance Requirements tabs.

How do I create a custom template from scratch?

You can’t create templates from scratch — you must duplicate an existing one. In certtmpl.msc, right-click an existing template that’s closest to your needs → Duplicate Template. Choose the compatibility level (Windows Server version), configure the settings, then publish it on your CA with Add-CATemplate -Name "NewTemplateName". The base template you duplicate from determines the initial settings.


AD CS Template Deployment Checklist

Step-by-step checklist for creating, configuring, and publishing certificate templates without errors.

Get Checklist

Related Insights

SSL/TLS

Fix 'The Certificate Chain Could Not Be Built to a Trusted Root Authority'

Fix the Windows certificate chain trust error. Covers missing root CA, intermediate certificate gaps, AIA/CDP issues, GPO trust distribution, and manual import — with certutil verification commands.

By Shivam sharma

15 May, 2026 · 06 Mins read

SSL/TLSTroubleshootingPKI

PKI

Fix 'The Revocation Function Was Unable to Check Revocation' Error

Fix the Windows revocation check error that blocks certificate validation, smart card logon, code signing, and HTTPS. Covers CRL distribution point issues, OCSP failures, and certutil diagnostics.

By Shivam sharma

15 May, 2026 · 06 Mins read

PKITroubleshootingWindows Server

SSH

Fix 'Permission Denied (publickey)' SSH Error: Complete Guide

Fix the SSH 'Permission denied (publickey)' error. Covers wrong key file, file permissions, SSH agent, authorized_keys issues, GitHub/GitLab, AWS EC2, and sshd_config — with ssh -vvv debugging.

By Sneha gupta

15 May, 2026 · 07 Mins read

SSHTroubleshooting

Ready to Secure Your Enterprise?

Experience how our cryptographic solutions simplify, centralize, and automate identity management for your entire organization.

Stay ahead on cryptography & PKI

Get monthly insights on certificate management, post-quantum readiness, and enterprise security. No spam.

We respect your privacy. Unsubscribe anytime.