As a manager, you should care about the New-AdcsSpnPlan command when planning for service principal name (SPN) registration in your organization’s Active Directory Certificate Services (AD CS) infrastructure. This is particularly relevant when implementing disaster recovery (DR) 524, which requires manual registration of HTTP SPNs.
Business Value
The business value lies in ensuring that your AD CS services can register their own SPNs, thus simplifying the DR process.
Who Uses This?
This command is primarily used by IT administrators responsible for managing and maintaining AD CS infrastructure.
Risks
Using this command incorrectly may lead to incomplete or incorrect registration of SPNs, potentially disrupting service availability during a disaster recovery scenario.
When a Manager Cares
A manager should care when:
- Their organization uses AD CS for issuing certificates.
- They plan to implement DR 524.
- They want to ensure their IT team is equipped with the necessary tools to handle SPN registration.
The New-AdcsSpnPlan command is used in conjunction with other commands from the SpnManager module. It builds a DR-524 SpnPlan from an ADCS SpnCandidate by resolving the CA server’s DistinguishedName from Active Directory and filtering out RPCSS/* entries.
Step-by-Step Use
- Get the candidate using
Get-AdcsSpnCandidate. - Pass this candidate to
New-AdcsSpnPlan. - Inspect the proposed SPNs in
ProposedSpnsfor correctness. - Manually register any missing HTTP SPNs.
Code Example
# Assuming $candidate is a valid object
$newSPNPlan = New-AdcsSpnPlan -Candidate $candidate
$newSPNPlan | Format-List
Watchpoints
- Be cautious not to include RPCSS/* entries in the
ProposedSpns, as these are auto-registered by AD CS. - Verify that all necessary HTTP SPNs are present.
The New-AdcsSpnPlan command helps create a plan for registering SPNs with AD CS. This is useful when implementing DR 524, which requires manual registration of HTTP SPNs.
What Does It Do?
This command:
- Takes a candidate from
Get-AdcsSpnCandidate. - Resolves the CA server’s DistinguishedName.
- Filters out RPCSS/* entries.
- Outputs a plan with proposed HTTP SPNs.
Step-by-Step Recipes
To use this command, follow these steps:
- Gather the necessary input for
Get-AdcsSpnCandidate. - Pass the candidate to
New-AdcsSpnPlan. - Review and manually register missing HTTP SPNs.
| Field | Value |
|---|---|
| Vendor | Detent Point LLC |
| Product | SpnManager 0.4.0 |
| Licence | Proprietary - licensed, not sold. See LICENSE. |
| Operational impact | Read-only. Queries Active Directory and reports findings; changes nothing. |
| Rights required | Directory read access. |
| Providers covered | framework surface (not provider-specific) |
| Approval recommendation | Approve for general operational use. It cannot alter directory state. |
Licence terms are proprietary and are supplied with the purchase, subscription or evaluation agreement. No open-source licence is granted.
| What | Why |
|---|---|
| Windows PowerShell 5.1 or later | Declared by the module manifest. |
| ActiveDirectory 1.0.0.0 | Required module. Ships with RSAT; install the Active Directory PowerShell feature. |
| A reachable domain controller | Every provider reads from Active Directory. |
| An account with directory read access | Needed to enumerate accounts and their SPNs. |
The New-AdcsSpnPlan command handles data in accordance with AD CS security practices, ensuring that sensitive information remains secure during transit and at rest.
Data Handling
- Input: Candidates from
Get-AdcsSpnCandidate. - Processing: Resolves CA server’s DistinguishedName; filters out RPCSS/* entries.
- Output: Proposed HTTP SPNs for manual registration.
Transit
Data is securely transmitted over the network using standard Active Directory protocols.
At-Rest
Data is stored in accordance with AD CS security best practices, ensuring confidentiality and integrity.
Audit Trail
All operations performed by this command are logged within the AD CS infrastructure for audit purposes.
Example 1
Get-AdcsSpnCandidate -Bindings $b | New-AdcsSpnPlanAlso uses: Get-AdcsSpnCandidate (Sense).
Example 2
New-AdcsSpnPlan -Candidate $candidateExample 3
Get-AdcsSpnCandidate -TargetComputer 'srv01' | New-AdcsSpnPlan | Test-SpnPlanAlso uses: Get-AdcsSpnCandidate (Sense), Test-SpnPlan (Test).