If you have not already read the first page in this MS PKI series, you should do so before continuing.
The following is useful for setting up a single ADCS PKI server in a very small environment such as a lab. It provides instructions using the standard graphical interface that most people use in the MS world. It uses LDAP for all publishing the CDP/AIA points to computers that are only on the domain.
If HTTP is needed to publish CRL/AIA, it must be on a different server (Maybe, I’ve had issues getting CRL/AIA publishing to work on the same server). The requirements can be used from the “Two Tier” setup instructions located on a different page.
Note that a single tier PKI is not typically appropriate in a production environment.
A second page is provided elsewhere that uses a mixture of command line instructions, both PowerShell and the certutil interfaces, for building and configuring the server.
Build up the server and add to the domain.
Copy CAPolicy.inf to C:\windows (%systemroot%) of root CA server. A simple minimal example is provided below. You must do this step prior to installing the CA role.
Warning: If creating a new replacement issuing (including single tier) server, use the CAPolicy.inf with the “LoadDefaultTemplates=0” line added. When server is ready to issue, manually add the certificate templates.
CAPolicy.inf example for Root CA:
[Version] Signature=”$Windows NT$” [Certsrv_Server] RenewalKeyLength=4096 RenewalValidityPeriod=Years RenewalValidityPeriodUnits=20 [CRLDistributionPoint] [AuthorityInformationAccess]
Install CA Role:
Enterprise root CA "Certification Authority"
Configure ADCS:
"Certification Authority" "Enterprise CA" "Root CA" "Create Private Key" -- RSA default is ok,key length 4096, SHA256 "Common name" -- Not the same name as the server "Validity period" -- Should be set by CAPolicy.inf, or equal to.
After complete, check the certificate with MMC CertSRV. It should match above settings.
Post Install Configuration:
Open command prompt as administrator. Don’t make these too short if using LDAP. Consider OCSP instead.
NOTE: There are many settings. These are pretty minimal.
Certutil -setreg CA\CRLPeriodUnits 1 Certutil -setreg CA\CRLPeriod "Weeks" --Next two if CRL Deltas are used (which I usually don't on single tier testing server) Certutil -setreg CA\CRLDeltaPeriodUnits 1 Certutil -setreg CA\CRLDeltaPeriod "Days"
Add the CDP and AIA points:
From Server Manager:
"Tools" "Certification Authority" (MMC CertSRV) "Properties" "Extensions" tab
Don’t screw these up or you have to start over because issued certs will be bad.
Add CDP (CRL Distibution Point):
Click ADD, use as examples and add LDAP path utilizing “Variable” and Insert.
ldap:///CN=<CATruncatedName><CRLNameSuffix>,CN=<ServerShortName>,CN=CDP,CN=Public Key Services,CN=Services,<ConfigurationContainer><CDPObjectClass> Check "Publish CRL's to this location","Include in CRL's", "Include in the CDP extentions of issued certificates" Remove default ones except C:\windows (standalone - so no file, ldap, anyway) -- or -- Uncheck all boxes for each.
Add AIA (Authority Information Access):
Click ADD, use as examples and add LDAP path utilizing “Variable” and Insert.
ldap:///CN=<CATruncatedName>,CN=AIA,CN=Public Key Services,CN=Services,<ConfigurationContainer><CAObjectClass> Check "Include in the AIA of issued certificates" Remove default ones except "C:\windows\System32\CertSrv\CertEnroll\<ServerDNSName>_<CaName><CertificateName>.crt -- or -- Uncheck all "Publish/Include" boxes for each.
Restart the Service and Publish CRL (certutil -crl):
Restart certificate services to activate this configuration in a PowerShell window:
restart-service certsvc
R-click "Revoked Certificates" All Tasks, Publish
C:\Windows\System32\CertSrv\CertEnroll – .crl’s date modified should change when CRL is published.
Check PKI health:
pkiview
Also check “Manage AD Containers” from the pkiview menu.
If CA Object Access Auditing is needed, see the page here.