Skip to content

Microsoft AD CS

Integrate Microsoft Active Directory Certificate Services (AD CS) with SSL-CLM to:

  • Issue certificates using AD CS templates
  • Renew certificates automatically
  • Revoke certificates
  • Discover and sync certificate templates
  • Maintain continuous CA inventory refresh

SSL-CLM integrates with Microsoft AD CS through a Windows Agent deployed on a domain-joined server. The agent executes native certificate enrollment operations locally and reports results securely to the platform.


SSL-CLM Platform
│
│ (mTLS, Pull-Based Jobs)
▼
Windows SSL-CLM Agent (domain-joined server)
│
│ (certutil / certreq — local command execution)
▼
Microsoft AD CS (Certificate Authority)

The agent must run on a domain-joined Windows server that has network access to the AD CS server (typically via RPC on TCP 135 + dynamic ports).


  • Microsoft AD CS installed and running (Enterprise CA recommended)
  • A domain-joined Windows server where the SSL-CLM Agent will run
  • The agent server must have network access to the AD CS server
  • Java 21+ installed on the agent server
  • A bootstrap token generated from the SSL-CLM platform

Confirm the AD CS role is installed and running on your CA server.

Open Server Manager and verify the Active Directory Certificate Services role is listed.

Windows Server Manager - AD CS Installed

Open the Certification Authority console (certsrv.msc) and confirm your CA is visible:

Certification Authority Console

Note your CA’s configuration name (e.g., WIN-6RM7FR3L231\qcecuring-local-ca). You’ll need this later.


From the Windows server where the agent will run, test connectivity to the CA:

Terminal window
certutil -ping -config "WIN-6RM7FR3L231\qcecuring-local-ca"

Successful output confirms the CA is reachable:

certutil CA ping success

If you receive “RPC Server Unavailable”:

  • Check TCP port 135 is open between the agent server and the CA
  • Verify firewall rules allow RPC dynamic ports
  • Ensure the CA service (CertSvc) is running
  • Confirm DCOM permissions

Before adding the CA, you need an agent registered on the Windows server.

  1. In the SSL-CLM UI, navigate to Infrastructure → Agents
  2. Click + Register Agent
  3. Enter the hostname of your Windows server
  4. Click Generate Token and copy the bootstrap token

Create Agent Bootstrap Token


On the Windows server, start the agent with just the platform URL and bootstrap token:

Terminal window
$env:API_URL = "https://ssl-clm.example.com:8080"
$env:AGENT_BOOTSTRAP_TOKEN = "YOUR_BOOTSTRAP_TOKEN"
java -jar ssl-clm-agent.jar

That’s it for the agent. The agent does not store any CA configuration locally — all MSCA settings (server hostname, credentials, CA identifier) are configured on the platform and delivered to the agent via job payloads when operations are executed.

The agent starts, registers with the platform, and begins reporting:

Windows Agent Launch

After successful bootstrap, the agent appears as ONLINE in the Agents list.


Now add the CA in the platform. All MSCA configuration is stored here — not on the agent.

  1. Navigate to Infrastructure → Certificate Authorities
  2. Click + Add CA
  3. Select Microsoft CA (AD CS) from the type cards
  4. Fill in the configuration:

Connection:

FieldDescriptionExample
NameFriendly display nameMSCA Production
WinRM ServerWindows server running AD CS (WinRM endpoint)adcs-server.corp.local
WinRM PortWinRM port (5985 for HTTP, 5986 for HTTPS)5985
Use HTTPSWhether to use HTTPS for WinRMfalse

Authentication:

FieldDescriptionExample
UsernameWinRM username (NTLM authentication)DOMAIN\admin
PasswordWinRM password (stored encrypted in vault)••••••••

CA Settings:

FieldDescriptionExample
CA Identifiercertutil config string: hostname\CA-NameWIN-6RM7FR3L231\qcecuring-local-ca

Agent & Sync:

FieldDescriptionExample
AgentSelect the agent registered in Step 3WIN-6RM7FR3L231
Discovery IntervalHours between CA inventory syncs24
  1. Click Save

The platform stores the credentials securely in the vault. When a job (issuance, revocation, template discovery) is dispatched to the agent, the config is included in the job payload — the agent never stores credentials locally.


After the CA is configured, load available certificate templates:

  1. Open the CA detail page (click the CA name)
  2. Click Load Templates

This triggers a CA_REFRESH job. The agent queries AD CS for available certificate templates:

Load Templates

Discovered templates include:

  • WebServer
  • CodeSigning
  • EnrollmentAgent
  • Custom templates (e.g., WebServer-SSL-CLM)

Templates are used during certificate enrollment — users select which template to issue from.


  1. Navigate to Certificates → + New Certificate
  2. Select Issue from CA mode
  3. Choose the Microsoft CA you configured
  4. Select a template (e.g., WebServer)
  5. Enter Common Name and SANs
  6. Click Submit

Submit CSR

The platform:

  1. Generates a CSR
  2. Creates an ISSUE_CERT job
  3. Agent picks up the job
  4. Agent submits the CSR to AD CS via certreq
  5. AD CS issues the certificate
  6. Agent returns the issued certificate to the platform
  7. Certificate appears in inventory with status Active

Issued Certificate


When revocation is requested:

  1. Platform creates a REVOKE_CERT job
  2. Agent picks up the job
  3. Agent executes revocation on AD CS using the MSCA request ID
  4. AD CS revokes the certificate and updates its CRL
  5. Platform updates certificate status to Revoked

Supported revocation reasons:

  • Unspecified
  • Key Compromise
  • CA Compromise
  • Affiliation Changed
  • Superseded
  • Cessation of Operation

SSL-CLM monitors MSCA-issued certificates and renews them automatically:

  1. Policy renewal threshold triggers (e.g., 30 days before expiry)
  2. Platform creates a RENEW_CERT job
  3. Agent generates a new CSR with the same subject/SANs
  4. Agent submits to AD CS using the same template
  5. New certificate is issued and replaces the old one
  6. If auto-deploy is configured, the new cert is pushed to stores
  7. Old certificate is archived

The agent connects to AD CS via WinRM using NTLM authentication. The credentials (username/password) are configured on the CA entity in the platform and passed securely to the agent during job execution.

FieldFormatExample
UsernameDOMAIN\user or user@domain.comCORP\svc-sslclm
PasswordDomain password(stored in vault)

Recommendations:

  • Use a dedicated service account for SSL-CLM
  • Grant the service account Certificate Request permissions on target AD CS templates
  • Do NOT use a Domain Admin account — follow least-privilege principles
  • If WinRM HTTPS is available (port 5986), enable useHttps: true for encrypted transport

For the agent to enroll certificates, the service account (or machine account) needs these permissions on the AD CS template:

  • Read — Discover the template
  • Enroll — Submit CSR and receive certificate
  • Autoenroll (optional) — For auto-renewal scenarios

Configure these in the Certificate Templates MMC snap-in under the template’s Security tab.


IssuePossible CauseResolution
Agent can’t reach CANetwork/firewall blocking RPCOpen TCP 135 + dynamic ports between agent and CA
”RPC Server Unavailable”CA service not running or DNS issueStart CertSvc, verify DNS resolution
”Access Denied” on enrollService account lacks template permissionsGrant Enroll permission on the template
Templates not loadingAgent not online or CA_REFRESH job failedCheck agent status, review job logs
Certificate stuck in “Pending”Template requires CA manager approvalApprove in the CA console, or use auto-approve template
Wrong templateTemplate not published to the CAPublish the template via certtmpl.msc

  • Run the agent as a dedicated service account with minimal domain permissions
  • Grant enrollment permissions only on specific templates — not all templates
  • Use Kerberos authentication (avoid storing explicit passwords when possible)
  • Enable audit logging on the CA for all enrollment operations
  • Restrict the agent server’s network access to only the CA and the SSL-CLM platform
  • Rotate the agent’s mTLS certificate before expiry