From 139d1f3a059bb3056411d8a57055d39a1e029cb8 Mon Sep 17 00:00:00 2001 From: gsadmin Date: Fri, 31 Jul 2026 17:41:13 -0400 Subject: [PATCH] Add create, update, and delete for Certificate Manager configuration The module was read-only for PKI configuration, which is why standing up an environment meant raw REST rather than cmdlets. Adds 15: New-, Set-, and Remove- for certificate authorities, policies, profiles, applications, and PKI subscribers. New-InfisicalCertificateAuthority -Type Intermediate returns an authority that can actually issue. Infisical creates a subordinate with status pending-certificate and never invokes generateIntermediateCaCertificate from the create path, so the cmdlet performs the remaining sequence: read the certificate signing request, sign it with -ParentCaId, import the signed certificate and chain back. Policy and profile bodies are deeply nested, so the constraint objects and per-enrollment-type config blocks are taken as dictionaries rather than as dozens of parameters, matching how -Subject and -Metadata already work. Two conversion details matter and are now pinned by tests: - PowerShell callers capitalise hashtable keys, and @{ Required = ... } was reaching the API as "Required", which its schema does not recognise. The constraint vocabulary is emitted lower-cased while every other key keeps its camelCase, since those are API field names supplied verbatim and lowercasing ttlDays or isCA would silently drop them. - An empty collection is omitted rather than sent. "allowed": [] reads to Infisical as "allow nothing", never what @{ Allowed = @() } was meant to express, and an entry carrying only "type" is rejected outright. -EnrollmentConfig routes to the block matching -EnrollmentType so EST, ACME, and SCEP settings arrive through one parameter. -AutoRenew is sent only when bound, because a switch is false when absent and sending it unconditionally would disable renewal on an update that never mentioned it. -ProjectId is optional on all 15 and resolves as it does elsewhere. Every one supports -WhatIf; Remove- cmdlets default to high confirm impact. Also fixes Update-Changelog, which inserted the version heading above the notes so the section the release workflow extracts held only the build line while the notes stayed under Unreleased - every release published an empty changelog. Co-Authored-By: Claude Opus 5 --- CHANGELOG.md | 26 +- Module/PSInfisicalAPI/PSInfisicalAPI.psd1 | 21 +- Module/PSInfisicalAPI/bin/PSInfisicalAPI.dll | Bin 451072 -> 505856 bytes .../bin/en-US/PSInfisicalAPI.dll-Help.xml | 435 +++++++++++++++++ .../en-US/PSInfisicalAPI.dll-Help.xml | 435 +++++++++++++++++ README.md | 40 +- build.ps1 | 19 +- .../PkiWriteCmdletTests.cs | 280 +++++++++++ .../CertificateApplicationWriteCmdlets.cs | 159 +++++++ .../CertificateAuthorityWriteCmdlets.cs | 183 ++++++++ .../Cmdlets/CertificatePolicyWriteCmdlets.cs | 193 ++++++++ .../Cmdlets/CertificateProfileWriteCmdlets.cs | 213 +++++++++ .../Cmdlets/InfisicalPkiWriteCmdletBase.cs | 164 +++++++ .../Cmdlets/PkiSubscriberWriteCmdlets.cs | 189 ++++++++ .../Endpoints/InfisicalEndpointNames.cs | 25 + .../Endpoints/InfisicalEndpointRegistry.cs | 37 ++ .../Pki/InfisicalPkiManagementClient.cs | 443 ++++++++++++++++++ .../Pki/InfisicalPkiManagementDtos.cs | 152 ++++++ 18 files changed, 3007 insertions(+), 7 deletions(-) create mode 100644 src/PSInfisicalAPI.Tests/PkiWriteCmdletTests.cs create mode 100644 src/PSInfisicalAPI/Cmdlets/CertificateApplicationWriteCmdlets.cs create mode 100644 src/PSInfisicalAPI/Cmdlets/CertificateAuthorityWriteCmdlets.cs create mode 100644 src/PSInfisicalAPI/Cmdlets/CertificatePolicyWriteCmdlets.cs create mode 100644 src/PSInfisicalAPI/Cmdlets/CertificateProfileWriteCmdlets.cs create mode 100644 src/PSInfisicalAPI/Cmdlets/InfisicalPkiWriteCmdletBase.cs create mode 100644 src/PSInfisicalAPI/Cmdlets/PkiSubscriberWriteCmdlets.cs create mode 100644 src/PSInfisicalAPI/Pki/InfisicalPkiManagementClient.cs create mode 100644 src/PSInfisicalAPI/Pki/InfisicalPkiManagementDtos.cs diff --git a/CHANGELOG.md b/CHANGELOG.md index 36811c2..c43977d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,11 +6,19 @@ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) loos ## Unreleased +## 2026.07.31.2140 + +_Build produced from commit 62131e750109._ + +## 2026.07.31.2136 + +_Build produced from commit 62131e750109._ + ## 2026.07.31.2019 - Build produced from commit e7674af1617c. -## Unreleased (carried forward) +## Unreleased (carried forward) ## 2026.07.31.2006 @@ -90,6 +98,22 @@ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) loos - `InfisicalCertificate.Metadata` and `InfisicalCertificateResult.Metadata` expose a certificate's metadata as a case-insensitive dictionary. - A metadata failure is reported as a warning rather than failing an issuance that otherwise succeeded, since by that point the certificate exists and may already be installed. +### Added (PKI configuration management) + +- Full create, update, and delete for the objects a Certificate Manager project is built from — 15 cmdlets across certificate authorities, policies, profiles, applications, and PKI subscribers. The module was previously read-only for PKI configuration, which is why environment setup meant raw REST. +- `New-InfisicalCertificateAuthority -Type Intermediate` returns an authority that can issue. Infisical creates a subordinate pending a certificate and exposes no call that completes it, so the cmdlet reads the CSR, signs it with `-ParentCaId`, and imports the signed certificate and chain. +- Constraint dictionaries accept `Allowed`/`Required`/`Denied` in any casing and emit the lower-case form the API requires; an empty collection is omitted rather than sent, since `"allowed": []` means "allow nothing" rather than "unconstrained". +- `-EnrollmentConfig` on the profile cmdlets routes to the block matching `-EnrollmentType`, so EST, ACME, and SCEP settings arrive through one parameter. +- `-ProjectId` is optional on all 15, resolving the same way the read cmdlets do. Every one supports `-WhatIf`, and `Remove-*` default to high confirm impact. + +### Fixed (build) + +- `Update-Changelog` inserted the version heading above the release notes, so the section the release workflow extracts contained only the build line while the notes stayed under "Unreleased" — every release published an empty changelog. Notes are now promoted into the version section, with a fresh empty "Unreleased" left above. + +### Changed (routing) + +- `SignCertificateByCa` prefers `/api/v1/cert-manager` over the older `/api/v1/pki` route. `RetrieveCertificate` and `GetCertificateBundle` deliberately keep the older route first: it resolves by serial number, which is what callers supply, whereas the cert-manager route takes a certificate id. Both remain registered so either identifier resolves. + ### Added (tooling) - `Scripts/Initialize-InfisicalCertManagerEnvironment.ps1` seeds a Certificate Manager project, CA hierarchy, certificate policies, API enrollment profiles, and a certificate application from one declarative configuration block, taking only a base URI, client id, and client secret. Idempotent and `-WhatIf`-aware. Seeds an RSA hierarchy for SCCM/MECM server and client authentication, and an ECDSA P-384 hierarchy for server/client authentication and code signing. diff --git a/Module/PSInfisicalAPI/PSInfisicalAPI.psd1 b/Module/PSInfisicalAPI/PSInfisicalAPI.psd1 index 342cb7b..8053431 100644 --- a/Module/PSInfisicalAPI/PSInfisicalAPI.psd1 +++ b/Module/PSInfisicalAPI/PSInfisicalAPI.psd1 @@ -1,6 +1,6 @@ @{ RootModule = 'PSInfisicalAPI.psm1' - ModuleVersion = '2026.07.31.2019' + ModuleVersion = '2026.07.31.2140' GUID = 'b8a2f3d4-7c51-4d2f-9e6a-1f0c8b3d4e51' Author = 'Grace Solutions' CompanyName = 'Grace Solutions' @@ -62,7 +62,22 @@ 'Write-InfisicalScepMdmProfileToWmi', 'Start-InfisicalProcess', 'Get-InfisicalEnvironmentVariable', - 'Get-InfisicalSANList' + 'Get-InfisicalSANList', + 'New-InfisicalCertificateAuthority', + 'Set-InfisicalCertificateAuthority', + 'Remove-InfisicalCertificateAuthority', + 'New-InfisicalCertificatePolicy', + 'Set-InfisicalCertificatePolicy', + 'Remove-InfisicalCertificatePolicy', + 'New-InfisicalCertificateProfile', + 'Set-InfisicalCertificateProfile', + 'Remove-InfisicalCertificateProfile', + 'New-InfisicalCertificateApplication', + 'Set-InfisicalCertificateApplication', + 'Remove-InfisicalCertificateApplication', + 'New-InfisicalPkiSubscriber', + 'Set-InfisicalPkiSubscriber', + 'Remove-InfisicalPkiSubscriber' ) AliasesToExport = @() VariablesToExport = @() @@ -74,7 +89,7 @@ LicenseUri = 'https://www.gnu.org/licenses/agpl-3.0.html' ProjectUri = 'https://prod.git.gracesolution.info/gsadmin/PSInfisicalAPI' ReleaseNotes = 'See CHANGELOG.md in the project repository for release history.' - CommitHash = 'e7674af1617c' + CommitHash = '62131e750109' } } } \ No newline at end of file diff --git a/Module/PSInfisicalAPI/bin/PSInfisicalAPI.dll b/Module/PSInfisicalAPI/bin/PSInfisicalAPI.dll index b4658d04392d7368b289b7074ee56f0432f9aa5b..4f22bac7b9a8c1f3c06e0752f5a1c95737fbe805 100644 GIT binary patch literal 505856 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ðs#IrtzxxLXcBj1TVNz{=J~5Sbe8SGM+(vek|o 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

dnf!-Q%T4G#$F^2B#Hu5< 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]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ƿ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 + + + New-InfisicalCertificateAuthority + Creates an internal Infisical certificate authority, signing a subordinate with its parent. + New + InfisicalCertificateAuthority + + + Creates a root or intermediate internal certificate authority in a Certificate Manager project. A root is self-signed on creation. Infisical creates an intermediate pending a certificate and exposes no single call that completes it, so this cmdlet performs the remaining sequence itself: it reads the certificate signing request, signs it with the authority named by -ParentCaId, and imports the signed certificate and chain back, returning an authority that is ready to issue. -NotAfter defaults to ten years for a root and five for an intermediate; -MaxPathLength defaults to 1 for a root and 0 otherwise. -ProjectId is optional and resolves to the organization's Certificate Manager project. + + + Notes + + Certificate authorities created through the API always have direct issuance disabled, because Infisical's creation service sets it explicitly and exposes no way to change it afterwards. Issue through a certificate profile, which does not consult that flag. Honors -WhatIf and -Confirm. + + + + + EXAMPLE 1 + $Root = New-InfisicalCertificateAuthority -Name 'root-ca' -Type Root -CommonName 'Contoso Root Certificate Authority' -Organization 'Contoso' -Country 'US' + Creates a self-signed root valid for ten years. + + + EXAMPLE 2 + New-InfisicalCertificateAuthority -Name 'issuing-ca' -Type Intermediate -ParentCaId $Root.Id -CommonName 'Contoso Issuing Certificate Authority' -KeyAlgorithm 'EC_secp384r1' + Creates a subordinate, signs it with the root, and imports the signed certificate so it can issue immediately. + + + + + + Set-InfisicalCertificateAuthority + Renames an internal Infisical certificate authority or changes its status. + Set + InfisicalCertificateAuthority + + + Updates the name or status of an internal certificate authority. Infisical's update schema accepts only these two fields; subject, key algorithm, and validity are fixed when the authority is created. Supply -PassThru to emit the updated record. + + + Notes + + Disabling an authority stops it issuing without deleting it or the certificates it has already signed. Honors -WhatIf and -Confirm. + + + + + EXAMPLE 1 + Set-InfisicalCertificateAuthority -CaId $Ca.Id -Status disabled + Stops the authority issuing new certificates. + + + EXAMPLE 2 + Set-InfisicalCertificateAuthority -CaId $Ca.Id -Name 'retired-issuing-ca' -PassThru + Renames the authority and emits the updated record. + + + + + + Remove-InfisicalCertificateAuthority + Deletes an internal Infisical certificate authority. + Remove + InfisicalCertificateAuthority + + + Deletes an internal certificate authority from a Certificate Manager project. -PassThru emits the removed identifier for logging. + + + Notes + + Destructive. Certificates already issued by the authority stop chaining to a known issuer once it is gone, and any subordinate beneath it is orphaned. High ConfirmImpact prompts unless -Confirm:$False is supplied. + + + + + EXAMPLE 1 + Remove-InfisicalCertificateAuthority -CaId $Ca.Id -Confirm:$False + Deletes the authority without prompting. + + + EXAMPLE 2 + Get-InfisicalCertificateAuthority -Kind Internal | Where-Object {($_.Status -eq 'disabled')} | Remove-InfisicalCertificateAuthority + Removes every disabled authority, prompting for each. + + + + + + New-InfisicalCertificatePolicy + Creates an Infisical certificate policy that constrains what a profile may issue. + New + InfisicalCertificatePolicy + + + Creates a certificate policy: the constraints a certificate profile issues within. Subject attributes, subject alternative names, key usages, and extended key usages are each expressed as allowed, required, and denied sets, supplied as dictionaries so the nested shape stays readable. -MaxValidity caps certificate lifetime, -KeyAlgorithm and -SignatureAlgorithm restrict the cryptography. A constraint that is not supplied leaves that dimension unconstrained, which is what fleet enrollment needs so each machine can present its own name. + + + Notes + + Constraint values use Infisical's snake_case names: digital_signature, key_encipherment, server_auth, client_auth, code_signing, common_name, dns_name, ip_address. Honors -WhatIf and -Confirm. + + + + + EXAMPLE 1 + New-InfisicalCertificatePolicy -Name 'server-auth' -MaxValidity '90d' -KeyAlgorithm 'RSA_2048','EC_secp384r1' -KeyUsage @{ Required = @('digital_signature','key_encipherment') } -ExtendedKeyUsage @{ Required = @('server_auth','client_auth') } + Creates a policy for server and client authentication, leaving subject and SANs unconstrained. + + + EXAMPLE 2 + New-InfisicalCertificatePolicy -Name 'code-signing' -MaxValidity '365d' -ExtendedKeyUsage @{ Required = @('code_signing'); Denied = @('server_auth','client_auth') } -SubjectAlternativeName @(@{ Type = 'dns_name'; Allowed = @('*.contoso.com') }) + Creates a code signing policy that forbids TLS usage and restricts DNS names to one suffix. + + + + + + Set-InfisicalCertificatePolicy + Updates an Infisical certificate policy. + Set + InfisicalCertificatePolicy + + + Updates a certificate policy. Only the constraints supplied on the command line are sent; anything omitted keeps its stored value. Supply -PassThru to emit the updated policy. + + + Notes + + Changing a policy affects every profile bound to it, and therefore every future certificate those profiles issue. Certificates already issued are unaffected. Honors -WhatIf and -Confirm. + + + + + EXAMPLE 1 + Set-InfisicalCertificatePolicy -PolicyId $Policy.Id -MaxValidity '30d' + Shortens the maximum lifetime, leaving every other constraint as it was. + + + EXAMPLE 2 + Set-InfisicalCertificatePolicy -PolicyId $Policy.Id -ExtendedKeyUsage @{ Required = @('server_auth') } -PassThru + Narrows the extended key usage and emits the updated policy. + + + + + + Remove-InfisicalCertificatePolicy + Deletes an Infisical certificate policy. + Remove + InfisicalCertificatePolicy + + + Deletes a certificate policy from a Certificate Manager project. -PassThru emits the removed identifier for logging. + + + Notes + + Destructive. A profile bound to the policy cannot issue once it is gone, so remove or repoint dependent profiles first. High ConfirmImpact prompts unless -Confirm:$False is supplied. + + + + + EXAMPLE 1 + Remove-InfisicalCertificatePolicy -PolicyId $Policy.Id -Confirm:$False + Deletes the policy without prompting. + + + EXAMPLE 2 + Get-InfisicalCertificatePolicy | Where-Object {($_.Name -like 'test-*')} | Remove-InfisicalCertificatePolicy + Removes every policy whose name begins with test-, prompting for each. + + + + + + New-InfisicalCertificateProfile + Creates an Infisical certificate profile that binds an issuing authority to a policy. + New + InfisicalCertificateProfile + + + Creates a certificate profile: the object Request-InfisicalCertificate -CertificateProfileId issues against. A profile binds an issuing certificate authority to a certificate policy and exposes it for one enrollment type. -Slug accepts lowercase letters, numbers, and hyphens. -EnrollmentConfig carries the settings for the chosen -EnrollmentType, so EST, ACME, and SCEP settings all arrive through one parameter; for the default api type, -AutoRenew and -RenewBeforeDays are folded into it. + + + Notes + + Profile issuance is the only path that does not consult the issuing authority's direct-issuance flag, so a profile issues successfully against an authority whose EnableDirectIssuance is False. Unlike a PKI subscriber, a profile accepts a per-request common name, which is what makes it suitable for fleet enrollment. Honors -WhatIf and -Confirm. + + + + + EXAMPLE 1 + New-InfisicalCertificateProfile -Slug 'server-auth' -CertificatePolicyId $Policy.Id -CaId $Ca.Id + Creates an API enrollment profile bound to a policy and issuing authority. + + + EXAMPLE 2 + New-InfisicalCertificateProfile -Slug 'workload' -CertificatePolicyId $Policy.Id -CaId $Ca.Id -AutoRenew -RenewBeforeDays 14 -Defaults @{ ttlDays = 90 } + Creates a profile that renews issued certificates fourteen days before expiry and defaults to a ninety day lifetime. + + + + + + Set-InfisicalCertificateProfile + Updates an Infisical certificate profile. + Set + InfisicalCertificateProfile + + + Updates a certificate profile. Only the values supplied on the command line are sent; anything omitted keeps its stored value, including the enrollment type unless -EnrollmentType is passed explicitly. Supply -PassThru to emit the updated profile. + + + Notes + + Repointing a profile at a different policy or issuing authority changes what future requests produce. Because certificate reuse is scoped by profile, Request-InfisicalCertificate keeps reusing certificates the profile issued previously until they fall inside their renewal window. Honors -WhatIf and -Confirm. + + + + + EXAMPLE 1 + Set-InfisicalCertificateProfile -ProfileId $Profile.Id -CertificatePolicyId $NewPolicy.Id + Repoints the profile at a different policy. + + + EXAMPLE 2 + Set-InfisicalCertificateProfile -ProfileId $Profile.Id -AutoRenew -RenewBeforeDays 7 -PassThru + Enables automatic renewal seven days before expiry and emits the updated profile. + + + + + + Remove-InfisicalCertificateProfile + Deletes an Infisical certificate profile. + Remove + InfisicalCertificateProfile + + + Deletes a certificate profile from a Certificate Manager project. -PassThru emits the removed identifier for logging. + + + Notes + + Destructive. Any script requesting certificates through the profile fails once it is gone, and the profile is detached from every application that referenced it. High ConfirmImpact prompts unless -Confirm:$False is supplied. + + + + + EXAMPLE 1 + Remove-InfisicalCertificateProfile -ProfileId $Profile.Id -Confirm:$False + Deletes the profile without prompting. + + + EXAMPLE 2 + Get-InfisicalCertificateProfile -ApplicationId $Application.Id | Remove-InfisicalCertificateProfile + Removes every profile attached to an application, prompting for each. + + + + + + New-InfisicalCertificateApplication + Creates an Infisical certificate application to group profiles and certificates. + New + InfisicalCertificateApplication + + + Creates a certificate application: the grouping the Infisical console presents profiles, members, and certificates under, and the scope Get-InfisicalCertificateProfile -ApplicationId and Get-InfisicalCertificate -ApplicationId filter by. Certificate profiles can be attached at creation with -ProfileId. + + + Notes + + Applications are served only from the organization's active Certificate Manager project. Creating one in any other cert-manager project fails, which is why -ProjectId resolves to the active project when it is not supplied. Honors -WhatIf and -Confirm. + + + + + EXAMPLE 1 + New-InfisicalCertificateApplication -Name 'platform' -Description 'Endpoint and workload certificates' + Creates an empty application. + + + EXAMPLE 2 + New-InfisicalCertificateApplication -Name 'platform' -ProfileId $ServerProfile.Id, $CodeSigningProfile.Id + Creates an application with two profiles already attached. + + + + + + Set-InfisicalCertificateApplication + Renames an Infisical certificate application or changes which profiles it holds. + Set + InfisicalCertificateApplication + + + Updates a certificate application. -Name and -Description change the record; -AddProfileId and -RemoveProfileId change which certificate profiles the application groups. The record and its profile attachments are separate endpoints, so supplying only profile parameters skips the record update entirely. Supply -PassThru to emit the updated application. + + + Notes + + Detaching a profile does not delete it; the profile continues to exist and issue, it is simply no longer grouped under the application. Honors -WhatIf and -Confirm. + + + + + EXAMPLE 1 + Set-InfisicalCertificateApplication -ApplicationId $Application.Id -AddProfileId $Profile.Id + Attaches a profile to the application. + + + EXAMPLE 2 + Set-InfisicalCertificateApplication -ApplicationId $Application.Id -Name 'endpoint-management' -RemoveProfileId $Old.Id -PassThru + Renames the application, detaches a profile, and emits the updated record. + + + + + + Remove-InfisicalCertificateApplication + Deletes an Infisical certificate application. + Remove + InfisicalCertificateApplication + + + Deletes a certificate application from a Certificate Manager project. -PassThru emits the removed identifier for logging. + + + Notes + + Destructive. The profiles the application grouped are not deleted, but scripts that locate a profile by application can no longer find it. High ConfirmImpact prompts unless -Confirm:$False is supplied. + + + + + EXAMPLE 1 + Remove-InfisicalCertificateApplication -ApplicationId $Application.Id -Confirm:$False + Deletes the application without prompting. + + + EXAMPLE 2 + Get-InfisicalCertificateApplication | Where-Object {($_.CertificateCount -eq 0)} | Remove-InfisicalCertificateApplication + Removes every application holding no certificates, prompting for each. + + + + + + New-InfisicalPkiSubscriber + Creates an Infisical PKI subscriber, a named enrollment identity with a fixed common name. + New + InfisicalPkiSubscriber + + + Creates a PKI subscriber: a named enrollment identity that pins one common name, an allowlist of subject alternative names, a lifetime, and the permitted key usages, so a request carries only a certificate signing request. -CommonName is the identity the subscriber issues for, and -SubjectAlternativeName is an allowlist rather than a default. + + + Notes + + A subscriber is a single identity, not a template. Infisical rejects any request whose certificate signing request names a different common name, and rejects any subject alternative name outside the allowlist, so enrolling many machines through subscribers means one subscriber per machine. Use a certificate profile for fleet enrollment. Honors -WhatIf and -Confirm. + + + + + EXAMPLE 1 + New-InfisicalPkiSubscriber -Name 'web01' -CommonName 'WEB01.contoso.com' -CaId $Ca.Id -Ttl '90d' + Creates a subscriber for one host. + + + EXAMPLE 2 + New-InfisicalPkiSubscriber -Name 'web01' -CommonName 'WEB01.contoso.com' -CaId $Ca.Id -Ttl '90d' -SubjectAlternativeName 'WEB01','WEB01.contoso.com' -ExtendedKeyUsage 'serverAuth','clientAuth' + Creates a subscriber that also permits two subject alternative names and restricts extended key usage. + + + + + + Set-InfisicalPkiSubscriber + Updates an Infisical PKI subscriber. + Set + InfisicalPkiSubscriber + + + Updates a PKI subscriber, addressed by its current -Name. Only the values supplied on the command line are sent; anything omitted keeps its stored value. -NewName renames the subscriber. Supply -PassThru to emit the updated record. + + + Notes + + Changing -CommonName changes the identity the subscriber issues for, so any script signing against it must present a matching certificate signing request afterwards. Honors -WhatIf and -Confirm. + + + + + EXAMPLE 1 + Set-InfisicalPkiSubscriber -Name 'web01' -Ttl '30d' + Shortens the lifetime of certificates issued for the subscriber. + + + EXAMPLE 2 + Set-InfisicalPkiSubscriber -Name 'web01' -SubjectAlternativeName 'WEB01','WEB01.contoso.com','www.contoso.com' -PassThru + Extends the permitted subject alternative names and emits the updated subscriber. + + + + + + Remove-InfisicalPkiSubscriber + Deletes an Infisical PKI subscriber. + Remove + InfisicalPkiSubscriber + + + Deletes a PKI subscriber from a Certificate Manager project, addressed by name. -PassThru emits the removed name for logging. + + + Notes + + Destructive. Any script signing through the subscriber fails once it is gone. Certificates already issued are unaffected. High ConfirmImpact prompts unless -Confirm:$False is supplied. + + + + + EXAMPLE 1 + Remove-InfisicalPkiSubscriber -Name 'web01' -Confirm:$False + Deletes the subscriber without prompting. + + + EXAMPLE 2 + Get-InfisicalPkiSubscriber | Where-Object {($_.Status -ne 'active')} | Remove-InfisicalPkiSubscriber + Removes every inactive subscriber, prompting for each. + + + diff --git a/Module/PSInfisicalAPI/en-US/PSInfisicalAPI.dll-Help.xml b/Module/PSInfisicalAPI/en-US/PSInfisicalAPI.dll-Help.xml index 79cb0b8..6a2776c 100644 --- a/Module/PSInfisicalAPI/en-US/PSInfisicalAPI.dll-Help.xml +++ b/Module/PSInfisicalAPI/en-US/PSInfisicalAPI.dll-Help.xml @@ -2104,4 +2104,439 @@ $Sans = Get-InfisicalSANList @GetInfisicalSANListParameters + + + New-InfisicalCertificateAuthority + Creates an internal Infisical certificate authority, signing a subordinate with its parent. + New + InfisicalCertificateAuthority + + + Creates a root or intermediate internal certificate authority in a Certificate Manager project. A root is self-signed on creation. Infisical creates an intermediate pending a certificate and exposes no single call that completes it, so this cmdlet performs the remaining sequence itself: it reads the certificate signing request, signs it with the authority named by -ParentCaId, and imports the signed certificate and chain back, returning an authority that is ready to issue. -NotAfter defaults to ten years for a root and five for an intermediate; -MaxPathLength defaults to 1 for a root and 0 otherwise. -ProjectId is optional and resolves to the organization's Certificate Manager project. + + + Notes + + Certificate authorities created through the API always have direct issuance disabled, because Infisical's creation service sets it explicitly and exposes no way to change it afterwards. Issue through a certificate profile, which does not consult that flag. Honors -WhatIf and -Confirm. + + + + + EXAMPLE 1 + $Root = New-InfisicalCertificateAuthority -Name 'root-ca' -Type Root -CommonName 'Contoso Root Certificate Authority' -Organization 'Contoso' -Country 'US' + Creates a self-signed root valid for ten years. + + + EXAMPLE 2 + New-InfisicalCertificateAuthority -Name 'issuing-ca' -Type Intermediate -ParentCaId $Root.Id -CommonName 'Contoso Issuing Certificate Authority' -KeyAlgorithm 'EC_secp384r1' + Creates a subordinate, signs it with the root, and imports the signed certificate so it can issue immediately. + + + + + + Set-InfisicalCertificateAuthority + Renames an internal Infisical certificate authority or changes its status. + Set + InfisicalCertificateAuthority + + + Updates the name or status of an internal certificate authority. Infisical's update schema accepts only these two fields; subject, key algorithm, and validity are fixed when the authority is created. Supply -PassThru to emit the updated record. + + + Notes + + Disabling an authority stops it issuing without deleting it or the certificates it has already signed. Honors -WhatIf and -Confirm. + + + + + EXAMPLE 1 + Set-InfisicalCertificateAuthority -CaId $Ca.Id -Status disabled + Stops the authority issuing new certificates. + + + EXAMPLE 2 + Set-InfisicalCertificateAuthority -CaId $Ca.Id -Name 'retired-issuing-ca' -PassThru + Renames the authority and emits the updated record. + + + + + + Remove-InfisicalCertificateAuthority + Deletes an internal Infisical certificate authority. + Remove + InfisicalCertificateAuthority + + + Deletes an internal certificate authority from a Certificate Manager project. -PassThru emits the removed identifier for logging. + + + Notes + + Destructive. Certificates already issued by the authority stop chaining to a known issuer once it is gone, and any subordinate beneath it is orphaned. High ConfirmImpact prompts unless -Confirm:$False is supplied. + + + + + EXAMPLE 1 + Remove-InfisicalCertificateAuthority -CaId $Ca.Id -Confirm:$False + Deletes the authority without prompting. + + + EXAMPLE 2 + Get-InfisicalCertificateAuthority -Kind Internal | Where-Object {($_.Status -eq 'disabled')} | Remove-InfisicalCertificateAuthority + Removes every disabled authority, prompting for each. + + + + + + New-InfisicalCertificatePolicy + Creates an Infisical certificate policy that constrains what a profile may issue. + New + InfisicalCertificatePolicy + + + Creates a certificate policy: the constraints a certificate profile issues within. Subject attributes, subject alternative names, key usages, and extended key usages are each expressed as allowed, required, and denied sets, supplied as dictionaries so the nested shape stays readable. -MaxValidity caps certificate lifetime, -KeyAlgorithm and -SignatureAlgorithm restrict the cryptography. A constraint that is not supplied leaves that dimension unconstrained, which is what fleet enrollment needs so each machine can present its own name. + + + Notes + + Constraint values use Infisical's snake_case names: digital_signature, key_encipherment, server_auth, client_auth, code_signing, common_name, dns_name, ip_address. Honors -WhatIf and -Confirm. + + + + + EXAMPLE 1 + New-InfisicalCertificatePolicy -Name 'server-auth' -MaxValidity '90d' -KeyAlgorithm 'RSA_2048','EC_secp384r1' -KeyUsage @{ Required = @('digital_signature','key_encipherment') } -ExtendedKeyUsage @{ Required = @('server_auth','client_auth') } + Creates a policy for server and client authentication, leaving subject and SANs unconstrained. + + + EXAMPLE 2 + New-InfisicalCertificatePolicy -Name 'code-signing' -MaxValidity '365d' -ExtendedKeyUsage @{ Required = @('code_signing'); Denied = @('server_auth','client_auth') } -SubjectAlternativeName @(@{ Type = 'dns_name'; Allowed = @('*.contoso.com') }) + Creates a code signing policy that forbids TLS usage and restricts DNS names to one suffix. + + + + + + Set-InfisicalCertificatePolicy + Updates an Infisical certificate policy. + Set + InfisicalCertificatePolicy + + + Updates a certificate policy. Only the constraints supplied on the command line are sent; anything omitted keeps its stored value. Supply -PassThru to emit the updated policy. + + + Notes + + Changing a policy affects every profile bound to it, and therefore every future certificate those profiles issue. Certificates already issued are unaffected. Honors -WhatIf and -Confirm. + + + + + EXAMPLE 1 + Set-InfisicalCertificatePolicy -PolicyId $Policy.Id -MaxValidity '30d' + Shortens the maximum lifetime, leaving every other constraint as it was. + + + EXAMPLE 2 + Set-InfisicalCertificatePolicy -PolicyId $Policy.Id -ExtendedKeyUsage @{ Required = @('server_auth') } -PassThru + Narrows the extended key usage and emits the updated policy. + + + + + + Remove-InfisicalCertificatePolicy + Deletes an Infisical certificate policy. + Remove + InfisicalCertificatePolicy + + + Deletes a certificate policy from a Certificate Manager project. -PassThru emits the removed identifier for logging. + + + Notes + + Destructive. A profile bound to the policy cannot issue once it is gone, so remove or repoint dependent profiles first. High ConfirmImpact prompts unless -Confirm:$False is supplied. + + + + + EXAMPLE 1 + Remove-InfisicalCertificatePolicy -PolicyId $Policy.Id -Confirm:$False + Deletes the policy without prompting. + + + EXAMPLE 2 + Get-InfisicalCertificatePolicy | Where-Object {($_.Name -like 'test-*')} | Remove-InfisicalCertificatePolicy + Removes every policy whose name begins with test-, prompting for each. + + + + + + New-InfisicalCertificateProfile + Creates an Infisical certificate profile that binds an issuing authority to a policy. + New + InfisicalCertificateProfile + + + Creates a certificate profile: the object Request-InfisicalCertificate -CertificateProfileId issues against. A profile binds an issuing certificate authority to a certificate policy and exposes it for one enrollment type. -Slug accepts lowercase letters, numbers, and hyphens. -EnrollmentConfig carries the settings for the chosen -EnrollmentType, so EST, ACME, and SCEP settings all arrive through one parameter; for the default api type, -AutoRenew and -RenewBeforeDays are folded into it. + + + Notes + + Profile issuance is the only path that does not consult the issuing authority's direct-issuance flag, so a profile issues successfully against an authority whose EnableDirectIssuance is False. Unlike a PKI subscriber, a profile accepts a per-request common name, which is what makes it suitable for fleet enrollment. Honors -WhatIf and -Confirm. + + + + + EXAMPLE 1 + New-InfisicalCertificateProfile -Slug 'server-auth' -CertificatePolicyId $Policy.Id -CaId $Ca.Id + Creates an API enrollment profile bound to a policy and issuing authority. + + + EXAMPLE 2 + New-InfisicalCertificateProfile -Slug 'workload' -CertificatePolicyId $Policy.Id -CaId $Ca.Id -AutoRenew -RenewBeforeDays 14 -Defaults @{ ttlDays = 90 } + Creates a profile that renews issued certificates fourteen days before expiry and defaults to a ninety day lifetime. + + + + + + Set-InfisicalCertificateProfile + Updates an Infisical certificate profile. + Set + InfisicalCertificateProfile + + + Updates a certificate profile. Only the values supplied on the command line are sent; anything omitted keeps its stored value, including the enrollment type unless -EnrollmentType is passed explicitly. Supply -PassThru to emit the updated profile. + + + Notes + + Repointing a profile at a different policy or issuing authority changes what future requests produce. Because certificate reuse is scoped by profile, Request-InfisicalCertificate keeps reusing certificates the profile issued previously until they fall inside their renewal window. Honors -WhatIf and -Confirm. + + + + + EXAMPLE 1 + Set-InfisicalCertificateProfile -ProfileId $Profile.Id -CertificatePolicyId $NewPolicy.Id + Repoints the profile at a different policy. + + + EXAMPLE 2 + Set-InfisicalCertificateProfile -ProfileId $Profile.Id -AutoRenew -RenewBeforeDays 7 -PassThru + Enables automatic renewal seven days before expiry and emits the updated profile. + + + + + + Remove-InfisicalCertificateProfile + Deletes an Infisical certificate profile. + Remove + InfisicalCertificateProfile + + + Deletes a certificate profile from a Certificate Manager project. -PassThru emits the removed identifier for logging. + + + Notes + + Destructive. Any script requesting certificates through the profile fails once it is gone, and the profile is detached from every application that referenced it. High ConfirmImpact prompts unless -Confirm:$False is supplied. + + + + + EXAMPLE 1 + Remove-InfisicalCertificateProfile -ProfileId $Profile.Id -Confirm:$False + Deletes the profile without prompting. + + + EXAMPLE 2 + Get-InfisicalCertificateProfile -ApplicationId $Application.Id | Remove-InfisicalCertificateProfile + Removes every profile attached to an application, prompting for each. + + + + + + New-InfisicalCertificateApplication + Creates an Infisical certificate application to group profiles and certificates. + New + InfisicalCertificateApplication + + + Creates a certificate application: the grouping the Infisical console presents profiles, members, and certificates under, and the scope Get-InfisicalCertificateProfile -ApplicationId and Get-InfisicalCertificate -ApplicationId filter by. Certificate profiles can be attached at creation with -ProfileId. + + + Notes + + Applications are served only from the organization's active Certificate Manager project. Creating one in any other cert-manager project fails, which is why -ProjectId resolves to the active project when it is not supplied. Honors -WhatIf and -Confirm. + + + + + EXAMPLE 1 + New-InfisicalCertificateApplication -Name 'platform' -Description 'Endpoint and workload certificates' + Creates an empty application. + + + EXAMPLE 2 + New-InfisicalCertificateApplication -Name 'platform' -ProfileId $ServerProfile.Id, $CodeSigningProfile.Id + Creates an application with two profiles already attached. + + + + + + Set-InfisicalCertificateApplication + Renames an Infisical certificate application or changes which profiles it holds. + Set + InfisicalCertificateApplication + + + Updates a certificate application. -Name and -Description change the record; -AddProfileId and -RemoveProfileId change which certificate profiles the application groups. The record and its profile attachments are separate endpoints, so supplying only profile parameters skips the record update entirely. Supply -PassThru to emit the updated application. + + + Notes + + Detaching a profile does not delete it; the profile continues to exist and issue, it is simply no longer grouped under the application. Honors -WhatIf and -Confirm. + + + + + EXAMPLE 1 + Set-InfisicalCertificateApplication -ApplicationId $Application.Id -AddProfileId $Profile.Id + Attaches a profile to the application. + + + EXAMPLE 2 + Set-InfisicalCertificateApplication -ApplicationId $Application.Id -Name 'endpoint-management' -RemoveProfileId $Old.Id -PassThru + Renames the application, detaches a profile, and emits the updated record. + + + + + + Remove-InfisicalCertificateApplication + Deletes an Infisical certificate application. + Remove + InfisicalCertificateApplication + + + Deletes a certificate application from a Certificate Manager project. -PassThru emits the removed identifier for logging. + + + Notes + + Destructive. The profiles the application grouped are not deleted, but scripts that locate a profile by application can no longer find it. High ConfirmImpact prompts unless -Confirm:$False is supplied. + + + + + EXAMPLE 1 + Remove-InfisicalCertificateApplication -ApplicationId $Application.Id -Confirm:$False + Deletes the application without prompting. + + + EXAMPLE 2 + Get-InfisicalCertificateApplication | Where-Object {($_.CertificateCount -eq 0)} | Remove-InfisicalCertificateApplication + Removes every application holding no certificates, prompting for each. + + + + + + New-InfisicalPkiSubscriber + Creates an Infisical PKI subscriber, a named enrollment identity with a fixed common name. + New + InfisicalPkiSubscriber + + + Creates a PKI subscriber: a named enrollment identity that pins one common name, an allowlist of subject alternative names, a lifetime, and the permitted key usages, so a request carries only a certificate signing request. -CommonName is the identity the subscriber issues for, and -SubjectAlternativeName is an allowlist rather than a default. + + + Notes + + A subscriber is a single identity, not a template. Infisical rejects any request whose certificate signing request names a different common name, and rejects any subject alternative name outside the allowlist, so enrolling many machines through subscribers means one subscriber per machine. Use a certificate profile for fleet enrollment. Honors -WhatIf and -Confirm. + + + + + EXAMPLE 1 + New-InfisicalPkiSubscriber -Name 'web01' -CommonName 'WEB01.contoso.com' -CaId $Ca.Id -Ttl '90d' + Creates a subscriber for one host. + + + EXAMPLE 2 + New-InfisicalPkiSubscriber -Name 'web01' -CommonName 'WEB01.contoso.com' -CaId $Ca.Id -Ttl '90d' -SubjectAlternativeName 'WEB01','WEB01.contoso.com' -ExtendedKeyUsage 'serverAuth','clientAuth' + Creates a subscriber that also permits two subject alternative names and restricts extended key usage. + + + + + + Set-InfisicalPkiSubscriber + Updates an Infisical PKI subscriber. + Set + InfisicalPkiSubscriber + + + Updates a PKI subscriber, addressed by its current -Name. Only the values supplied on the command line are sent; anything omitted keeps its stored value. -NewName renames the subscriber. Supply -PassThru to emit the updated record. + + + Notes + + Changing -CommonName changes the identity the subscriber issues for, so any script signing against it must present a matching certificate signing request afterwards. Honors -WhatIf and -Confirm. + + + + + EXAMPLE 1 + Set-InfisicalPkiSubscriber -Name 'web01' -Ttl '30d' + Shortens the lifetime of certificates issued for the subscriber. + + + EXAMPLE 2 + Set-InfisicalPkiSubscriber -Name 'web01' -SubjectAlternativeName 'WEB01','WEB01.contoso.com','www.contoso.com' -PassThru + Extends the permitted subject alternative names and emits the updated subscriber. + + + + + + Remove-InfisicalPkiSubscriber + Deletes an Infisical PKI subscriber. + Remove + InfisicalPkiSubscriber + + + Deletes a PKI subscriber from a Certificate Manager project, addressed by name. -PassThru emits the removed name for logging. + + + Notes + + Destructive. Any script signing through the subscriber fails once it is gone. Certificates already issued are unaffected. High ConfirmImpact prompts unless -Confirm:$False is supplied. + + + + + EXAMPLE 1 + Remove-InfisicalPkiSubscriber -Name 'web01' -Confirm:$False + Deletes the subscriber without prompting. + + + EXAMPLE 2 + Get-InfisicalPkiSubscriber | Where-Object {($_.Status -ne 'active')} | Remove-InfisicalPkiSubscriber + Removes every inactive subscriber, prompting for each. + + + diff --git a/README.md b/README.md index f81cf69..630ef88 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ Import-Module -Name .\Module\PSInfisicalAPI ## Cmdlets -The module exports 51 cmdlets. Discovery cmdlets (`Get-Infisical*`) use a `List` (default) / single-record parameter-set pair: invoking without the identity parameter returns the collection, supplying the identity parameter returns one record. +The module exports 68 cmdlets. Discovery cmdlets (`Get-Infisical*`) use a `List` (default) / single-record parameter-set pair: invoking without the identity parameter returns the collection, supplying the identity parameter returns one record. ### Session @@ -118,6 +118,44 @@ The module exports 51 cmdlets. Discovery cmdlets (`Get-Infisical*`) use a `List` | `Write-InfisicalScepMdmProfileToWmi`| Submits a SCEP MDM profile to the local MDM Bridge WMI provider to trigger enrollment. | | `Get-InfisicalSANList` | Builds a SAN candidate list (device name, `.` per adapter DNS suffix, RFC 1918 + CGNAT IPv4 addresses, IPv4/IPv6 loopback) for `Request-InfisicalCertificate -DnsName`. | +### PKI configuration + +Creating and changing the objects a Certificate Manager project is built from. `-ProjectId` is optional on all of them, and every one honours `-WhatIf`. + +| Cmdlet | Purpose | +| ---------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `New-InfisicalCertificateAuthority` | Creates a root or intermediate internal CA, signing a subordinate with its parent so it can issue. | +| `Set-InfisicalCertificateAuthority` | Renames an internal CA or changes its status. | +| `Remove-InfisicalCertificateAuthority` | Deletes an internal CA. | +| `New-InfisicalCertificatePolicy` | Creates a certificate policy constraining subject, SANs, key usages, and validity. | +| `Set-InfisicalCertificatePolicy` | Updates a certificate policy; only supplied constraints are sent. | +| `Remove-InfisicalCertificatePolicy` | Deletes a certificate policy. | +| `New-InfisicalCertificateProfile` | Creates a certificate profile binding an issuing CA to a policy for enrollment. | +| `Set-InfisicalCertificateProfile` | Updates a certificate profile. | +| `Remove-InfisicalCertificateProfile` | Deletes a certificate profile. | +| `New-InfisicalCertificateApplication` | Creates a certificate application and optionally attaches profiles. | +| `Set-InfisicalCertificateApplication` | Renames an application, or attaches and detaches profiles. | +| `Remove-InfisicalCertificateApplication` | Deletes a certificate application. | +| `New-InfisicalPkiSubscriber` | Creates a PKI subscriber: one named identity with a fixed common name. | +| `Set-InfisicalPkiSubscriber` | Updates a PKI subscriber. | +| `Remove-InfisicalPkiSubscriber` | Deletes a PKI subscriber. | + +Constraint dictionaries take `Allowed`, `Required`, and `Denied` in whatever casing reads naturally — they reach the API lower-cased — and an empty list is omitted rather than sent as "allow nothing": + +```powershell +$Root = New-InfisicalCertificateAuthority -Name 'root-ca' -Type Root -CommonName 'Contoso Root CA' -Organization 'Contoso' -Country 'US' +$Ca = New-InfisicalCertificateAuthority -Name 'issuing-ca' -Type Intermediate -ParentCaId $Root.Id -CommonName 'Contoso Issuing CA' + +$Policy = New-InfisicalCertificatePolicy -Name 'server-auth' -MaxValidity '90d' ` + -KeyAlgorithm 'RSA_2048','EC_secp384r1' ` + -KeyUsage @{ Required = @('digital_signature','key_encipherment') } ` + -ExtendedKeyUsage @{ Required = @('server_auth','client_auth') } + +$CertificateProfile = New-InfisicalCertificateProfile -Slug 'server-auth' -CertificatePolicyId $Policy.Id -CaId $Ca.Id -AutoRenew -RenewBeforeDays 14 +$Application = New-InfisicalCertificateApplication -Name 'platform' -ProfileId $CertificateProfile.Id +``` + +The intermediate comes back ready to issue: Infisical creates a subordinate pending a certificate, and `New-InfisicalCertificateAuthority` performs the remaining sequence — read the CSR, sign it with `-ParentCaId`, import the result. ### Process | Cmdlet | Purpose | diff --git a/build.ps1 b/build.ps1 index b560d8c..2b5e436 100644 --- a/build.ps1 +++ b/build.ps1 @@ -156,7 +156,22 @@ function Write-Manifest { 'Write-InfisicalScepMdmProfileToWmi', 'Start-InfisicalProcess', 'Get-InfisicalEnvironmentVariable', - 'Get-InfisicalSANList' + 'Get-InfisicalSANList', + 'New-InfisicalCertificateAuthority', + 'Set-InfisicalCertificateAuthority', + 'Remove-InfisicalCertificateAuthority', + 'New-InfisicalCertificatePolicy', + 'Set-InfisicalCertificatePolicy', + 'Remove-InfisicalCertificatePolicy', + 'New-InfisicalCertificateProfile', + 'Set-InfisicalCertificateProfile', + 'Remove-InfisicalCertificateProfile', + 'New-InfisicalCertificateApplication', + 'Set-InfisicalCertificateApplication', + 'Remove-InfisicalCertificateApplication', + 'New-InfisicalPkiSubscriber', + 'Set-InfisicalPkiSubscriber', + 'Remove-InfisicalPkiSubscriber' ) AliasesToExport = @() VariablesToExport = @() @@ -250,7 +265,7 @@ if (`$cmds.Count -eq 0) { throw "No cmdlets were exported by the PSInfisicalAPI module." } -`$expectedCmds = @('Connect-Infisical','Disconnect-Infisical','Get-InfisicalSecret','New-InfisicalSecret','Update-InfisicalSecret','Remove-InfisicalSecret','Copy-InfisicalSecret','ConvertTo-InfisicalSecretDictionary','Export-InfisicalSecrets','Import-InfisicalSecret','Get-InfisicalProject','New-InfisicalProject','Update-InfisicalProject','Remove-InfisicalProject','Get-InfisicalEnvironment','New-InfisicalEnvironment','Update-InfisicalEnvironment','Remove-InfisicalEnvironment','Get-InfisicalFolder','New-InfisicalFolder','Update-InfisicalFolder','Remove-InfisicalFolder','Get-InfisicalTag','New-InfisicalTag','Update-InfisicalTag','Remove-InfisicalTag','Get-InfisicalOrganization','New-InfisicalOrganization','Update-InfisicalOrganization','Remove-InfisicalOrganization','Get-InfisicalSubOrganization','New-InfisicalSubOrganization','Update-InfisicalSubOrganization','Remove-InfisicalSubOrganization','Get-InfisicalCertificateAuthority','Get-InfisicalPkiSubscriber','Get-InfisicalCertificateProfile','Get-InfisicalCertificatePolicy','Get-InfisicalCertificate','Request-InfisicalCertificate','ConvertTo-InfisicalCertificate','Install-InfisicalCertificate','Uninstall-InfisicalCertificate','Export-InfisicalCertificate','Get-InfisicalCertificateApplication','Get-InfisicalCertificateApplicationEnrollment','New-InfisicalScepDynamicChallenge','Get-InfisicalScepMdmProfile','Export-InfisicalScepMdmProfile','Write-InfisicalScepMdmProfileToWmi','Start-InfisicalProcess','Get-InfisicalEnvironmentVariable','Get-InfisicalSANList') +`$expectedCmds = @('Connect-Infisical','Disconnect-Infisical','Get-InfisicalSecret','New-InfisicalSecret','Update-InfisicalSecret','Remove-InfisicalSecret','Copy-InfisicalSecret','ConvertTo-InfisicalSecretDictionary','Export-InfisicalSecrets','Import-InfisicalSecret','Get-InfisicalProject','New-InfisicalProject','Update-InfisicalProject','Remove-InfisicalProject','Get-InfisicalEnvironment','New-InfisicalEnvironment','Update-InfisicalEnvironment','Remove-InfisicalEnvironment','Get-InfisicalFolder','New-InfisicalFolder','Update-InfisicalFolder','Remove-InfisicalFolder','Get-InfisicalTag','New-InfisicalTag','Update-InfisicalTag','Remove-InfisicalTag','Get-InfisicalOrganization','New-InfisicalOrganization','Update-InfisicalOrganization','Remove-InfisicalOrganization','Get-InfisicalSubOrganization','New-InfisicalSubOrganization','Update-InfisicalSubOrganization','Remove-InfisicalSubOrganization','Get-InfisicalCertificateAuthority','Get-InfisicalPkiSubscriber','Get-InfisicalCertificateProfile','Get-InfisicalCertificatePolicy','Get-InfisicalCertificate','Request-InfisicalCertificate','ConvertTo-InfisicalCertificate','Install-InfisicalCertificate','Uninstall-InfisicalCertificate','Export-InfisicalCertificate','Get-InfisicalCertificateApplication','Get-InfisicalCertificateApplicationEnrollment','New-InfisicalScepDynamicChallenge','Get-InfisicalScepMdmProfile','Export-InfisicalScepMdmProfile','Write-InfisicalScepMdmProfileToWmi','Start-InfisicalProcess','Get-InfisicalEnvironmentVariable','Get-InfisicalSANList','New-InfisicalCertificateAuthority','Set-InfisicalCertificateAuthority','Remove-InfisicalCertificateAuthority','New-InfisicalCertificatePolicy','Set-InfisicalCertificatePolicy','Remove-InfisicalCertificatePolicy','New-InfisicalCertificateProfile','Set-InfisicalCertificateProfile','Remove-InfisicalCertificateProfile','New-InfisicalCertificateApplication','Set-InfisicalCertificateApplication','Remove-InfisicalCertificateApplication','New-InfisicalPkiSubscriber','Set-InfisicalPkiSubscriber','Remove-InfisicalPkiSubscriber') foreach (`$expected in `$expectedCmds) { if (-not (Get-Command -Name `$expected -Module PSInfisicalAPI -ErrorAction SilentlyContinue)) { throw "Cmdlet not found: `$expected" diff --git a/src/PSInfisicalAPI.Tests/PkiWriteCmdletTests.cs b/src/PSInfisicalAPI.Tests/PkiWriteCmdletTests.cs new file mode 100644 index 0000000..c96f773 --- /dev/null +++ b/src/PSInfisicalAPI.Tests/PkiWriteCmdletTests.cs @@ -0,0 +1,280 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Management.Automation; +using System.Reflection; +using Newtonsoft.Json; +using Xunit; + +namespace PSInfisicalAPI.Tests +{ + ///

+ /// The create/update/delete cmdlets for Certificate Manager configuration. Their bodies are built from + /// caller-supplied dictionaries, so the conversion into the exact JSON Infisical's schemas accept is what + /// these pin. + /// + public class PkiWriteCmdletTests + { + private static readonly Assembly ModuleAssembly = typeof(PSInfisicalAPI.Connections.InfisicalConnection).Assembly; + + private static readonly string[] WriteCmdletTypes = new[] + { + "NewInfisicalCertificateAuthorityCmdlet", "SetInfisicalCertificateAuthorityCmdlet", "RemoveInfisicalCertificateAuthorityCmdlet", + "NewInfisicalCertificatePolicyCmdlet", "SetInfisicalCertificatePolicyCmdlet", "RemoveInfisicalCertificatePolicyCmdlet", + "NewInfisicalCertificateProfileCmdlet", "SetInfisicalCertificateProfileCmdlet", "RemoveInfisicalCertificateProfileCmdlet", + "NewInfisicalCertificateApplicationCmdlet", "SetInfisicalCertificateApplicationCmdlet", "RemoveInfisicalCertificateApplicationCmdlet", + "NewInfisicalPkiSubscriberCmdlet", "SetInfisicalPkiSubscriberCmdlet", "RemoveInfisicalPkiSubscriberCmdlet" + }; + + private static Dictionary ToJsonObject(IDictionary source) + { + Type baseType = ModuleAssembly.GetType("PSInfisicalAPI.Cmdlets.InfisicalPkiWriteCmdletBase", true); + MethodInfo method = baseType.GetMethod("ToJsonObject", BindingFlags.NonPublic | BindingFlags.Static); + Assert.NotNull(method); + return (Dictionary)method.Invoke(null, new object[] { source }); + } + + private static List> ToJsonObjectList(IEnumerable source) + { + Type baseType = ModuleAssembly.GetType("PSInfisicalAPI.Cmdlets.InfisicalPkiWriteCmdletBase", true); + MethodInfo method = baseType.GetMethod("ToJsonObjectList", BindingFlags.NonPublic | BindingFlags.Static); + Assert.NotNull(method); + return (List>)method.Invoke(null, new object[] { source }); + } + + [Fact] + public void Every_Write_Cmdlet_Declares_ShouldProcess() + { + List offenders = new List(); + + foreach (string typeName in WriteCmdletTypes) + { + Type type = ModuleAssembly.GetType(string.Concat("PSInfisicalAPI.Cmdlets.", typeName), true); + + bool supportsShouldProcess = false; + foreach (CustomAttributeData attribute in type.GetCustomAttributesData()) + { + if (attribute.AttributeType != typeof(CmdletAttribute)) { continue; } + foreach (CustomAttributeNamedArgument named in attribute.NamedArguments) + { + if (named.MemberName == "SupportsShouldProcess" && (bool)named.TypedValue.Value) { supportsShouldProcess = true; } + } + } + + if (!supportsShouldProcess) { offenders.Add(typeName); } + } + + Assert.Empty(offenders); + } + + [Fact] + public void Every_Remove_Cmdlet_Defaults_To_High_Confirm_Impact() + { + List offenders = new List(); + + foreach (string typeName in WriteCmdletTypes) + { + if (!typeName.StartsWith("Remove", StringComparison.Ordinal)) { continue; } + + Type type = ModuleAssembly.GetType(string.Concat("PSInfisicalAPI.Cmdlets.", typeName), true); + + bool high = false; + foreach (CustomAttributeData attribute in type.GetCustomAttributesData()) + { + if (attribute.AttributeType != typeof(CmdletAttribute)) { continue; } + foreach (CustomAttributeNamedArgument named in attribute.NamedArguments) + { + if (named.MemberName == "ConfirmImpact" && (ConfirmImpact)named.TypedValue.Value == ConfirmImpact.High) { high = true; } + } + } + + if (!high) { offenders.Add(typeName); } + } + + Assert.Empty(offenders); + } + + [Fact] + public void Every_Write_Cmdlet_Resolves_The_Project_Instead_Of_Requiring_It() + { + List offenders = new List(); + + foreach (string typeName in WriteCmdletTypes) + { + Type type = ModuleAssembly.GetType(string.Concat("PSInfisicalAPI.Cmdlets.", typeName), true); + PropertyInfo projectId = type.GetProperty("ProjectId"); + Assert.True(projectId != null, string.Concat(typeName, " has no ProjectId property")); + + foreach (CustomAttributeData attribute in projectId.GetCustomAttributesData()) + { + if (attribute.AttributeType != typeof(ParameterAttribute)) { continue; } + foreach (CustomAttributeNamedArgument named in attribute.NamedArguments) + { + if (named.MemberName == "Mandatory" && (bool)named.TypedValue.Value) { offenders.Add(typeName); } + } + } + } + + Assert.Empty(offenders); + } + + [Theory] + // PowerShell callers capitalise hashtable keys; Infisical's schema is lower case. + [InlineData("Required", "required")] + [InlineData("required", "required")] + [InlineData("Allowed", "allowed")] + [InlineData("DENIED", "denied")] + public void Constraint_Keys_Are_Emitted_In_The_Casing_The_Api_Requires(string supplied, string expected) + { + Hashtable source = new Hashtable { { supplied, new[] { "server_auth" } } }; + Dictionary result = ToJsonObject(source); + + Assert.True(result.ContainsKey(expected), string.Concat("expected key '", expected, "' but got: ", JsonConvert.SerializeObject(result))); + } + + [Fact] + public void Non_Constraint_Keys_Keep_Their_Camel_Case() + { + // Field names elsewhere in the body are camelCase and supplied verbatim; lowercasing them would + // silently drop settings the API would no longer recognise. + Hashtable source = new Hashtable { { "ttlDays", 90 }, { "keyAlgorithm", "RSA_2048" }, { "isCA", "denied" }, { "maxPathLength", 0 } }; + Dictionary result = ToJsonObject(source); + + Assert.True(result.ContainsKey("ttlDays")); + Assert.True(result.ContainsKey("keyAlgorithm")); + Assert.True(result.ContainsKey("isCA")); + Assert.True(result.ContainsKey("maxPathLength")); + } + + [Fact] + public void An_Empty_Collection_Is_Dropped_Rather_Than_Sent_As_Allow_Nothing() + { + Hashtable source = new Hashtable { { "Allowed", new string[0] }, { "Required", new[] { "server_auth" } } }; + Dictionary result = ToJsonObject(source); + + Assert.False(result.ContainsKey("allowed")); + Assert.True(result.ContainsKey("required")); + } + + [Fact] + public void A_Wholly_Empty_Constraint_Becomes_Null_So_It_Is_Omitted() + { + Assert.Null(ToJsonObject(new Hashtable())); + Assert.Null(ToJsonObject(new Hashtable { { "Allowed", new string[0] } })); + Assert.Null(ToJsonObject(null)); + } + + [Fact] + public void A_Constraint_List_Drops_Entries_That_Constrain_Nothing() + { + // An entry carrying only "type" is rejected by Infisical's refinement, and is what a caller writes + // when they meant to leave that dimension alone. + List source = new List + { + new Hashtable { { "Type", "dns_name" }, { "Allowed", new[] { "*.contoso.com" } } }, + new Hashtable { { "Type", "ip_address" }, { "Allowed", new string[0] } } + }; + + List> result = ToJsonObjectList(source); + + Dictionary only = Assert.Single(result); + Assert.Equal("dns_name", only["type"]); + Assert.True(only.ContainsKey("allowed")); + } + + [Fact] + public void Nested_Dictionaries_Survive_Conversion() + { + Hashtable source = new Hashtable + { + { "outer", new Hashtable { { "inner", new Hashtable { { "Required", new[] { "a" } } } } } } + }; + + Dictionary result = ToJsonObject(source); + string json = JsonConvert.SerializeObject(result); + + Assert.Contains("\"outer\"", json); + Assert.Contains("\"inner\"", json); + Assert.Contains("\"required\"", json); + } + + [Fact] + public void Profile_Enrollment_Config_Is_Routed_To_The_Block_For_Its_Type() + { + Type cmdletType = ModuleAssembly.GetType("PSInfisicalAPI.Cmdlets.NewInfisicalCertificateProfileCmdlet", true); + MethodInfo build = cmdletType.GetMethod("BuildRequest", BindingFlags.NonPublic | BindingFlags.Static); + Assert.NotNull(build); + + Hashtable config = new Hashtable { { "passphrase", "secret" } }; + + object estRequest = build.Invoke(null, new object[] { "slug", null, "ca", "policy", "est", "ca", false, null, null, config, false }); + Assert.NotNull(estRequest.GetType().GetProperty("EstConfig").GetValue(estRequest)); + Assert.Null(estRequest.GetType().GetProperty("ApiConfig").GetValue(estRequest)); + + object scepRequest = build.Invoke(null, new object[] { "slug", null, "ca", "policy", "scep", "ca", false, null, null, config, false }); + Assert.NotNull(scepRequest.GetType().GetProperty("ScepConfig").GetValue(scepRequest)); + + object apiRequest = build.Invoke(null, new object[] { "slug", null, "ca", "policy", "api", "ca", true, 14, null, null, true }); + object apiConfig = apiRequest.GetType().GetProperty("ApiConfig").GetValue(apiRequest); + Assert.NotNull(apiConfig); + + Dictionary typed = (Dictionary)apiConfig; + Assert.Equal(true, typed["autoRenew"]); + Assert.Equal(14, typed["renewBeforeDays"]); + } + + [Fact] + public void Auto_Renew_Is_Only_Sent_When_The_Caller_Asked_For_It() + { + // A switch parameter is always false when absent, so sending it unconditionally would silently + // disable renewal on an update that never mentioned it. + Type cmdletType = ModuleAssembly.GetType("PSInfisicalAPI.Cmdlets.NewInfisicalCertificateProfileCmdlet", true); + MethodInfo build = cmdletType.GetMethod("BuildRequest", BindingFlags.NonPublic | BindingFlags.Static); + + object unbound = build.Invoke(null, new object[] { "slug", null, "ca", "policy", "api", "ca", false, null, null, null, false }); + Assert.Null(unbound.GetType().GetProperty("ApiConfig").GetValue(unbound)); + + object bound = build.Invoke(null, new object[] { "slug", null, "ca", "policy", "api", "ca", false, null, null, null, true }); + Dictionary config = (Dictionary)bound.GetType().GetProperty("ApiConfig").GetValue(bound); + Assert.NotNull(config); + Assert.Equal(false, config["autoRenew"]); + } + + [Fact] + public void Every_Management_Endpoint_Is_Registered() + { + string[] names = new[] + { + PSInfisicalAPI.Endpoints.InfisicalEndpointNames.CreateInternalCertificateAuthority, + PSInfisicalAPI.Endpoints.InfisicalEndpointNames.UpdateInternalCertificateAuthority, + PSInfisicalAPI.Endpoints.InfisicalEndpointNames.DeleteInternalCertificateAuthority, + PSInfisicalAPI.Endpoints.InfisicalEndpointNames.GetCertificateAuthorityCsr, + PSInfisicalAPI.Endpoints.InfisicalEndpointNames.SignIntermediateCertificateAuthority, + PSInfisicalAPI.Endpoints.InfisicalEndpointNames.ImportCertificateAuthorityCertificate, + PSInfisicalAPI.Endpoints.InfisicalEndpointNames.CreateCertificatePolicy, + PSInfisicalAPI.Endpoints.InfisicalEndpointNames.UpdateCertificatePolicy, + PSInfisicalAPI.Endpoints.InfisicalEndpointNames.DeleteCertificatePolicy, + PSInfisicalAPI.Endpoints.InfisicalEndpointNames.CreateCertificateProfile, + PSInfisicalAPI.Endpoints.InfisicalEndpointNames.UpdateCertificateProfile, + PSInfisicalAPI.Endpoints.InfisicalEndpointNames.DeleteCertificateProfile, + PSInfisicalAPI.Endpoints.InfisicalEndpointNames.CreateCertificateApplication, + PSInfisicalAPI.Endpoints.InfisicalEndpointNames.UpdateCertificateApplication, + PSInfisicalAPI.Endpoints.InfisicalEndpointNames.DeleteCertificateApplication, + PSInfisicalAPI.Endpoints.InfisicalEndpointNames.AddCertificateApplicationProfiles, + PSInfisicalAPI.Endpoints.InfisicalEndpointNames.RemoveCertificateApplicationProfile, + PSInfisicalAPI.Endpoints.InfisicalEndpointNames.CreatePkiSubscriber, + PSInfisicalAPI.Endpoints.InfisicalEndpointNames.UpdatePkiSubscriber, + PSInfisicalAPI.Endpoints.InfisicalEndpointNames.DeletePkiSubscriber + }; + + foreach (string name in names) + { + IReadOnlyList candidates = + PSInfisicalAPI.Endpoints.InfisicalEndpointRegistry.GetCandidates(name); + + Assert.True(candidates.Count > 0, string.Concat(name, " is not registered")); + Assert.All(candidates, c => Assert.True(c.RequiresAuthorization, string.Concat(name, " should require authorization"))); + } + } + } +} diff --git a/src/PSInfisicalAPI/Cmdlets/CertificateApplicationWriteCmdlets.cs b/src/PSInfisicalAPI/Cmdlets/CertificateApplicationWriteCmdlets.cs new file mode 100644 index 0000000..9f75c51 --- /dev/null +++ b/src/PSInfisicalAPI/Cmdlets/CertificateApplicationWriteCmdlets.cs @@ -0,0 +1,159 @@ +using System; +using System.Management.Automation; +using PSInfisicalAPI.Connections; +using PSInfisicalAPI.Models; +using PSInfisicalAPI.Pki; + +namespace PSInfisicalAPI.Cmdlets +{ + /// + /// Creates a certificate application: the grouping the Infisical console presents profiles, members, and + /// certificates under. + /// + [Cmdlet(VerbsCommon.New, "InfisicalCertificateApplication", SupportsShouldProcess = true)] + [OutputType(typeof(InfisicalCertificateApplication))] + public sealed class NewInfisicalCertificateApplicationCmdlet : InfisicalPkiWriteCmdletBase + { + private const string Component = "NewInfisicalCertificateApplicationCmdlet"; + + [Parameter(Mandatory = true, Position = 0)] public string Name { get; set; } + [Parameter] public string ProjectId { get; set; } + [Parameter] public string Description { get; set; } + + /// Certificate profiles to attach on creation. + [Parameter] public string[] ProfileId { get; set; } + + protected override void ProcessRecord() + { + try + { + InfisicalConnection connection = InfisicalSessionManager.RequireCurrent(); + ProjectId = ResolveCertManagerProjectId(connection, ProjectId); + if (string.IsNullOrEmpty(ProjectId)) { return; } + + if (!ShouldProcess(Name, "Create certificate application")) { return; } + + InfisicalCertificateApplicationWriteRequestDto request = new InfisicalCertificateApplicationWriteRequestDto + { + Name = Name, + Description = Description, + ProfileIds = ToStringList(ProfileId) + }; + + InfisicalPkiManagementClient client = new InfisicalPkiManagementClient(HttpClient, Logger); + WriteObject(client.WriteCertificateApplication(connection, ProjectId, null, request)); + } + catch (Exception exception) + { + WriteErrorForException(Component, "CreateCertificateApplication", exception); + } + } + } + + /// + /// Renames a certificate application or changes its description, and attaches or detaches profiles. + /// + [Cmdlet(VerbsCommon.Set, "InfisicalCertificateApplication", SupportsShouldProcess = true)] + [OutputType(typeof(InfisicalCertificateApplication))] + public sealed class SetInfisicalCertificateApplicationCmdlet : InfisicalPkiWriteCmdletBase + { + private const string Component = "SetInfisicalCertificateApplicationCmdlet"; + + [Parameter(Mandatory = true, Position = 0, ValueFromPipelineByPropertyName = true)] + [Alias("Id")] + public string ApplicationId { get; set; } + + [Parameter] public string ProjectId { get; set; } + [Parameter] public string Name { get; set; } + [Parameter] public string Description { get; set; } + + /// Certificate profiles to attach. Profiles already attached are left alone. + [Parameter] public string[] AddProfileId { get; set; } + + /// Certificate profiles to detach. + [Parameter] public string[] RemoveProfileId { get; set; } + + [Parameter] public SwitchParameter PassThru { get; set; } + + protected override void ProcessRecord() + { + try + { + InfisicalConnection connection = InfisicalSessionManager.RequireCurrent(); + ProjectId = ResolveCertManagerProjectId(connection, ProjectId); + if (string.IsNullOrEmpty(ProjectId)) { return; } + + if (!ShouldProcess(ApplicationId, "Update certificate application")) { return; } + + InfisicalPkiManagementClient client = new InfisicalPkiManagementClient(HttpClient, Logger); + InfisicalCertificateApplication updated = null; + + // The application record and its profile attachments are separate endpoints, so the name and + // description update is skipped entirely when only profiles were supplied. + if (!string.IsNullOrEmpty(Name) || !string.IsNullOrEmpty(Description)) + { + InfisicalCertificateApplicationWriteRequestDto request = new InfisicalCertificateApplicationWriteRequestDto + { + Name = Name, + Description = Description + }; + + updated = client.WriteCertificateApplication(connection, ProjectId, ApplicationId, request); + } + + if (ToStringList(AddProfileId) != null) + { + client.AddCertificateApplicationProfiles(connection, ProjectId, ApplicationId, ToStringList(AddProfileId)); + } + + foreach (string profileId in ToStringList(RemoveProfileId) ?? new System.Collections.Generic.List()) + { + client.RemoveCertificateApplicationProfile(connection, ProjectId, ApplicationId, profileId); + } + + if (PassThru.IsPresent && updated != null) { WriteObject(updated); } + } + catch (Exception exception) + { + WriteErrorForException(Component, "UpdateCertificateApplication", exception); + } + } + } + + /// + /// Deletes a certificate application. + /// + [Cmdlet(VerbsCommon.Remove, "InfisicalCertificateApplication", SupportsShouldProcess = true, ConfirmImpact = ConfirmImpact.High)] + public sealed class RemoveInfisicalCertificateApplicationCmdlet : InfisicalPkiWriteCmdletBase + { + private const string Component = "RemoveInfisicalCertificateApplicationCmdlet"; + + [Parameter(Mandatory = true, Position = 0, ValueFromPipelineByPropertyName = true)] + [Alias("Id")] + public string ApplicationId { get; set; } + + [Parameter] public string ProjectId { get; set; } + [Parameter] public SwitchParameter PassThru { get; set; } + + protected override void ProcessRecord() + { + try + { + InfisicalConnection connection = InfisicalSessionManager.RequireCurrent(); + ProjectId = ResolveCertManagerProjectId(connection, ProjectId); + if (string.IsNullOrEmpty(ProjectId)) { return; } + + if (!ShouldProcess(ApplicationId, "Delete certificate application")) { return; } + + InfisicalPkiManagementClient client = new InfisicalPkiManagementClient(HttpClient, Logger); + client.DeleteCertificateApplication(connection, ProjectId, ApplicationId); + + if (PassThru.IsPresent) { WriteObject(ApplicationId); } + } + catch (Exception exception) + { + WriteErrorForException(Component, "DeleteCertificateApplication", exception); + } + } + } +} diff --git a/src/PSInfisicalAPI/Cmdlets/CertificateAuthorityWriteCmdlets.cs b/src/PSInfisicalAPI/Cmdlets/CertificateAuthorityWriteCmdlets.cs new file mode 100644 index 0000000..31f5e32 --- /dev/null +++ b/src/PSInfisicalAPI/Cmdlets/CertificateAuthorityWriteCmdlets.cs @@ -0,0 +1,183 @@ +using System; +using System.Management.Automation; +using PSInfisicalAPI.Connections; +using PSInfisicalAPI.Models; +using PSInfisicalAPI.Pki; + +namespace PSInfisicalAPI.Cmdlets +{ + /// + /// Creates an internal certificate authority, signing a subordinate with its parent so it comes back ready + /// to issue. + /// + [Cmdlet(VerbsCommon.New, "InfisicalCertificateAuthority", SupportsShouldProcess = true)] + [OutputType(typeof(InfisicalCertificateAuthority))] + public sealed class NewInfisicalCertificateAuthorityCmdlet : InfisicalPkiWriteCmdletBase + { + private const string Component = "NewInfisicalCertificateAuthorityCmdlet"; + + [Parameter(Mandatory = true, Position = 0)] public string Name { get; set; } + + [Parameter(Mandatory = true)] + [ValidateSet("Root", "Intermediate")] + public string Type { get; set; } + + [Parameter(Mandatory = true)] public string CommonName { get; set; } + + /// Required for -Type Intermediate: the authority that signs this one. + [Parameter] public string ParentCaId { get; set; } + + [Parameter] public string ProjectId { get; set; } + [Parameter] public string Organization { get; set; } + [Parameter] public string OrganizationalUnit { get; set; } + [Parameter] public string Country { get; set; } + [Parameter] public string State { get; set; } + [Parameter] public string Locality { get; set; } + [Parameter] public string FriendlyName { get; set; } + + [Parameter] + [ValidateSet("RSA_2048", "RSA_3072", "RSA_4096", "EC_prime256v1", "EC_secp384r1", "EC_secp521r1")] + public string KeyAlgorithm { get; set; } = "RSA_2048"; + + /// Expiry. Defaults to ten years for a root and five for a subordinate. + [Parameter] public DateTimeOffset? NotAfter { get; set; } + + [Parameter] public DateTimeOffset? NotBefore { get; set; } + + /// Subordinate authorities permitted beneath this one. Defaults to 1 for a root, 0 otherwise. + [Parameter] public int? MaxPathLength { get; set; } + + protected override void ProcessRecord() + { + try + { + InfisicalConnection connection = InfisicalSessionManager.RequireCurrent(); + ProjectId = ResolveCertManagerProjectId(connection, ProjectId); + if (string.IsNullOrEmpty(ProjectId)) { return; } + + bool isRoot = string.Equals(Type, "Root", StringComparison.OrdinalIgnoreCase); + if (!isRoot && string.IsNullOrEmpty(ParentCaId)) + { + throw new PSInfisicalAPI.Errors.InfisicalConfigurationException( + "-ParentCaId is required for an intermediate certificate authority; it names the authority that signs this one."); + } + + if (!ShouldProcess(Name, string.Concat("Create ", Type.ToLowerInvariant(), " certificate authority"))) { return; } + + DateTimeOffset expiry = NotAfter ?? DateTimeOffset.UtcNow.AddYears(isRoot ? 10 : 5); + int pathLength = MaxPathLength ?? (isRoot ? 1 : 0); + + InfisicalPkiManagementClient client = new InfisicalPkiManagementClient(HttpClient, Logger); + + InfisicalCertificateAuthority created = client.CreateInternalCertificateAuthority( + connection, ProjectId, Name, isRoot ? "root" : "intermediate", CommonName, + Organization, OrganizationalUnit, Country, State, Locality, KeyAlgorithm, FriendlyName, + ToApiTimestamp(NotBefore), ToApiTimestamp(expiry), pathLength); + + if (created == null) + { + throw new PSInfisicalAPI.Errors.InfisicalApiException("Creating the certificate authority returned no record."); + } + + if (!isRoot) + { + // Infisical creates a subordinate pending a certificate; without this it exists but cannot + // sign anything. + Logger.Information(Component, string.Concat("Signing '", Name, "' with parent certificate authority '", ParentCaId, "'.")); + client.CompleteSubordinateCertificateAuthority(connection, ProjectId, created.Id, ParentCaId, ToApiTimestamp(expiry), pathLength); + + InfisicalPkiClient readClient = new InfisicalPkiClient(HttpClient, Logger); + InfisicalCertificateAuthority refreshed = readClient.GetInternalCertificateAuthority(connection, created.Id, ProjectId); + if (refreshed != null) { created = refreshed; } + } + + WriteObject(created); + } + catch (Exception exception) + { + WriteErrorForException(Component, "CreateCertificateAuthority", exception); + } + } + } + + /// + /// Renames an internal certificate authority or changes its status. + /// + [Cmdlet(VerbsCommon.Set, "InfisicalCertificateAuthority", SupportsShouldProcess = true)] + [OutputType(typeof(InfisicalCertificateAuthority))] + public sealed class SetInfisicalCertificateAuthorityCmdlet : InfisicalPkiWriteCmdletBase + { + private const string Component = "SetInfisicalCertificateAuthorityCmdlet"; + + [Parameter(Mandatory = true, Position = 0, ValueFromPipelineByPropertyName = true)] + [Alias("Id")] + public string CaId { get; set; } + + [Parameter] public string ProjectId { get; set; } + [Parameter] public string Name { get; set; } + + [Parameter] + [ValidateSet("active", "disabled")] + public string Status { get; set; } + + [Parameter] public SwitchParameter PassThru { get; set; } + + protected override void ProcessRecord() + { + try + { + InfisicalConnection connection = InfisicalSessionManager.RequireCurrent(); + ProjectId = ResolveCertManagerProjectId(connection, ProjectId); + if (string.IsNullOrEmpty(ProjectId)) { return; } + + if (!ShouldProcess(CaId, "Update certificate authority")) { return; } + + InfisicalPkiManagementClient client = new InfisicalPkiManagementClient(HttpClient, Logger); + InfisicalCertificateAuthority updated = client.UpdateInternalCertificateAuthority(connection, ProjectId, CaId, Name, Status); + + if (PassThru.IsPresent) { WriteObject(updated); } + } + catch (Exception exception) + { + WriteErrorForException(Component, "UpdateCertificateAuthority", exception); + } + } + } + + /// + /// Deletes an internal certificate authority. + /// + [Cmdlet(VerbsCommon.Remove, "InfisicalCertificateAuthority", SupportsShouldProcess = true, ConfirmImpact = ConfirmImpact.High)] + public sealed class RemoveInfisicalCertificateAuthorityCmdlet : InfisicalPkiWriteCmdletBase + { + private const string Component = "RemoveInfisicalCertificateAuthorityCmdlet"; + + [Parameter(Mandatory = true, Position = 0, ValueFromPipelineByPropertyName = true)] + [Alias("Id")] + public string CaId { get; set; } + + [Parameter] public string ProjectId { get; set; } + [Parameter] public SwitchParameter PassThru { get; set; } + + protected override void ProcessRecord() + { + try + { + InfisicalConnection connection = InfisicalSessionManager.RequireCurrent(); + ProjectId = ResolveCertManagerProjectId(connection, ProjectId); + if (string.IsNullOrEmpty(ProjectId)) { return; } + + if (!ShouldProcess(CaId, "Delete certificate authority")) { return; } + + InfisicalPkiManagementClient client = new InfisicalPkiManagementClient(HttpClient, Logger); + client.DeleteInternalCertificateAuthority(connection, ProjectId, CaId); + + if (PassThru.IsPresent) { WriteObject(CaId); } + } + catch (Exception exception) + { + WriteErrorForException(Component, "DeleteCertificateAuthority", exception); + } + } + } +} diff --git a/src/PSInfisicalAPI/Cmdlets/CertificatePolicyWriteCmdlets.cs b/src/PSInfisicalAPI/Cmdlets/CertificatePolicyWriteCmdlets.cs new file mode 100644 index 0000000..67619f3 --- /dev/null +++ b/src/PSInfisicalAPI/Cmdlets/CertificatePolicyWriteCmdlets.cs @@ -0,0 +1,193 @@ +using System; +using System.Collections; +using System.Management.Automation; +using PSInfisicalAPI.Connections; +using PSInfisicalAPI.Models; +using PSInfisicalAPI.Pki; + +namespace PSInfisicalAPI.Cmdlets +{ + /// + /// Creates a certificate policy: the constraints a profile issues within. + /// + [Cmdlet(VerbsCommon.New, "InfisicalCertificatePolicy", SupportsShouldProcess = true)] + [OutputType(typeof(InfisicalCertificatePolicy))] + public sealed class NewInfisicalCertificatePolicyCmdlet : InfisicalPkiWriteCmdletBase + { + private const string Component = "NewInfisicalCertificatePolicyCmdlet"; + + [Parameter(Mandatory = true, Position = 0)] public string Name { get; set; } + [Parameter] public string ProjectId { get; set; } + [Parameter] public string Description { get; set; } + + /// Maximum certificate lifetime, for example '90d', '12m', or '1y'. + [Parameter] public string MaxValidity { get; set; } + + /// Permitted key algorithms, for example RSA_2048 or EC_secp384r1. + [Parameter] public string[] KeyAlgorithm { get; set; } + + /// Permitted signature algorithms. + [Parameter] public string[] SignatureAlgorithm { get; set; } + + /// Key usage constraint, as @{ Required = @('digital_signature'); Denied = @(...) }. + [Parameter] public IDictionary KeyUsage { get; set; } + + /// Extended key usage constraint, as @{ Required = @('server_auth','client_auth') }. + [Parameter] public IDictionary ExtendedKeyUsage { get; set; } + + /// Subject attribute constraints, as @( @{ Type = 'organization'; Allowed = @('Contoso') } ). + [Parameter] public IDictionary[] Subject { get; set; } + + /// Subject alternative name constraints, as @( @{ Type = 'dns_name'; Allowed = @('*.contoso.com') } ). + [Parameter] public IDictionary[] SubjectAlternativeName { get; set; } + + /// Basic constraints, as @{ isCA = 'denied'; maxPathLength = 0 }. + [Parameter] public IDictionary BasicConstraints { get; set; } + + protected override void ProcessRecord() + { + try + { + InfisicalConnection connection = InfisicalSessionManager.RequireCurrent(); + ProjectId = ResolveCertManagerProjectId(connection, ProjectId); + if (string.IsNullOrEmpty(ProjectId)) { return; } + + if (!ShouldProcess(Name, "Create certificate policy")) { return; } + + InfisicalCertificatePolicyWriteRequestDto request = new InfisicalCertificatePolicyWriteRequestDto + { + Name = Name, + Description = Description, + Subject = ToJsonObjectList(Subject), + Sans = ToJsonObjectList(SubjectAlternativeName), + KeyUsages = ToJsonObject(KeyUsage), + ExtendedKeyUsages = ToJsonObject(ExtendedKeyUsage), + BasicConstraints = ToJsonObject(BasicConstraints) + }; + + if (!string.IsNullOrEmpty(MaxValidity)) + { + request.Validity = new System.Collections.Generic.Dictionary { { "max", MaxValidity } }; + } + + System.Collections.Generic.Dictionary algorithms = new System.Collections.Generic.Dictionary(); + if (ToStringList(KeyAlgorithm) != null) { algorithms["keyAlgorithm"] = ToStringList(KeyAlgorithm); } + if (ToStringList(SignatureAlgorithm) != null) { algorithms["signature"] = ToStringList(SignatureAlgorithm); } + if (algorithms.Count > 0) { request.Algorithms = algorithms; } + + InfisicalPkiManagementClient client = new InfisicalPkiManagementClient(HttpClient, Logger); + WriteObject(client.WriteCertificatePolicy(connection, ProjectId, null, request)); + } + catch (Exception exception) + { + WriteErrorForException(Component, "CreateCertificatePolicy", exception); + } + } + } + + /// + /// Updates a certificate policy. Only the supplied constraints are sent; the rest are left as they are. + /// + [Cmdlet(VerbsCommon.Set, "InfisicalCertificatePolicy", SupportsShouldProcess = true)] + [OutputType(typeof(InfisicalCertificatePolicy))] + public sealed class SetInfisicalCertificatePolicyCmdlet : InfisicalPkiWriteCmdletBase + { + private const string Component = "SetInfisicalCertificatePolicyCmdlet"; + + [Parameter(Mandatory = true, Position = 0, ValueFromPipelineByPropertyName = true)] + [Alias("Id")] + public string PolicyId { get; set; } + + [Parameter] public string ProjectId { get; set; } + [Parameter] public string Name { get; set; } + [Parameter] public string Description { get; set; } + [Parameter] public string MaxValidity { get; set; } + [Parameter] public string[] KeyAlgorithm { get; set; } + [Parameter] public string[] SignatureAlgorithm { get; set; } + [Parameter] public IDictionary KeyUsage { get; set; } + [Parameter] public IDictionary ExtendedKeyUsage { get; set; } + [Parameter] public IDictionary[] Subject { get; set; } + [Parameter] public IDictionary[] SubjectAlternativeName { get; set; } + [Parameter] public IDictionary BasicConstraints { get; set; } + [Parameter] public SwitchParameter PassThru { get; set; } + + protected override void ProcessRecord() + { + try + { + InfisicalConnection connection = InfisicalSessionManager.RequireCurrent(); + ProjectId = ResolveCertManagerProjectId(connection, ProjectId); + if (string.IsNullOrEmpty(ProjectId)) { return; } + + if (!ShouldProcess(PolicyId, "Update certificate policy")) { return; } + + InfisicalCertificatePolicyWriteRequestDto request = new InfisicalCertificatePolicyWriteRequestDto + { + Name = Name, + Description = Description, + Subject = ToJsonObjectList(Subject), + Sans = ToJsonObjectList(SubjectAlternativeName), + KeyUsages = ToJsonObject(KeyUsage), + ExtendedKeyUsages = ToJsonObject(ExtendedKeyUsage), + BasicConstraints = ToJsonObject(BasicConstraints) + }; + + if (!string.IsNullOrEmpty(MaxValidity)) + { + request.Validity = new System.Collections.Generic.Dictionary { { "max", MaxValidity } }; + } + + System.Collections.Generic.Dictionary algorithms = new System.Collections.Generic.Dictionary(); + if (ToStringList(KeyAlgorithm) != null) { algorithms["keyAlgorithm"] = ToStringList(KeyAlgorithm); } + if (ToStringList(SignatureAlgorithm) != null) { algorithms["signature"] = ToStringList(SignatureAlgorithm); } + if (algorithms.Count > 0) { request.Algorithms = algorithms; } + + InfisicalPkiManagementClient client = new InfisicalPkiManagementClient(HttpClient, Logger); + InfisicalCertificatePolicy updated = client.WriteCertificatePolicy(connection, ProjectId, PolicyId, request); + + if (PassThru.IsPresent) { WriteObject(updated); } + } + catch (Exception exception) + { + WriteErrorForException(Component, "UpdateCertificatePolicy", exception); + } + } + } + + /// + /// Deletes a certificate policy. + /// + [Cmdlet(VerbsCommon.Remove, "InfisicalCertificatePolicy", SupportsShouldProcess = true, ConfirmImpact = ConfirmImpact.High)] + public sealed class RemoveInfisicalCertificatePolicyCmdlet : InfisicalPkiWriteCmdletBase + { + private const string Component = "RemoveInfisicalCertificatePolicyCmdlet"; + + [Parameter(Mandatory = true, Position = 0, ValueFromPipelineByPropertyName = true)] + [Alias("Id")] + public string PolicyId { get; set; } + + [Parameter] public string ProjectId { get; set; } + [Parameter] public SwitchParameter PassThru { get; set; } + + protected override void ProcessRecord() + { + try + { + InfisicalConnection connection = InfisicalSessionManager.RequireCurrent(); + ProjectId = ResolveCertManagerProjectId(connection, ProjectId); + if (string.IsNullOrEmpty(ProjectId)) { return; } + + if (!ShouldProcess(PolicyId, "Delete certificate policy")) { return; } + + InfisicalPkiManagementClient client = new InfisicalPkiManagementClient(HttpClient, Logger); + client.DeleteCertificatePolicy(connection, ProjectId, PolicyId); + + if (PassThru.IsPresent) { WriteObject(PolicyId); } + } + catch (Exception exception) + { + WriteErrorForException(Component, "DeleteCertificatePolicy", exception); + } + } + } +} diff --git a/src/PSInfisicalAPI/Cmdlets/CertificateProfileWriteCmdlets.cs b/src/PSInfisicalAPI/Cmdlets/CertificateProfileWriteCmdlets.cs new file mode 100644 index 0000000..bec8835 --- /dev/null +++ b/src/PSInfisicalAPI/Cmdlets/CertificateProfileWriteCmdlets.cs @@ -0,0 +1,213 @@ +using System; +using System.Collections; +using System.Management.Automation; +using PSInfisicalAPI.Connections; +using PSInfisicalAPI.Models; +using PSInfisicalAPI.Pki; + +namespace PSInfisicalAPI.Cmdlets +{ + /// + /// Creates a certificate profile, binding an issuing certificate authority to a certificate policy and + /// exposing it for enrollment. + /// + [Cmdlet(VerbsCommon.New, "InfisicalCertificateProfile", SupportsShouldProcess = true)] + [OutputType(typeof(InfisicalCertificateProfile))] + public sealed class NewInfisicalCertificateProfileCmdlet : InfisicalPkiWriteCmdletBase + { + private const string Component = "NewInfisicalCertificateProfileCmdlet"; + + /// Lowercase letters, numbers, and hyphens only. + [Parameter(Mandatory = true, Position = 0)] public string Slug { get; set; } + + [Parameter(Mandatory = true)] public string CertificatePolicyId { get; set; } + [Parameter] public string CaId { get; set; } + [Parameter] public string ProjectId { get; set; } + [Parameter] public string Description { get; set; } + + [Parameter] + [ValidateSet("api", "est", "acme", "scep")] + public string EnrollmentType { get; set; } = "api"; + + [Parameter] + [ValidateSet("ca", "self-signed")] + public string IssuerType { get; set; } = "ca"; + + /// Renew issued certificates automatically. + [Parameter] public SwitchParameter AutoRenew { get; set; } + + /// Days before expiry at which automatic renewal runs, 1 to 30. + [Parameter] public int? RenewBeforeDays { get; set; } + + /// Issuance defaults, as @{ ttlDays = 90; keyAlgorithm = 'RSA_2048' }. + [Parameter] public IDictionary Defaults { get; set; } + + /// Enrollment configuration for -EnrollmentType est, acme, or scep. + [Parameter] public IDictionary EnrollmentConfig { get; set; } + + protected override void ProcessRecord() + { + try + { + InfisicalConnection connection = InfisicalSessionManager.RequireCurrent(); + ProjectId = ResolveCertManagerProjectId(connection, ProjectId); + if (string.IsNullOrEmpty(ProjectId)) { return; } + + if (!ShouldProcess(Slug, "Create certificate profile")) { return; } + + InfisicalCertificateProfileWriteRequestDto request = BuildRequest( + Slug, Description, CaId, CertificatePolicyId, EnrollmentType, IssuerType, + AutoRenew.IsPresent, RenewBeforeDays, Defaults, EnrollmentConfig, + MyInvocation.BoundParameters.ContainsKey("AutoRenew")); + + InfisicalPkiManagementClient client = new InfisicalPkiManagementClient(HttpClient, Logger); + WriteObject(client.WriteCertificateProfile(connection, ProjectId, null, request)); + } + catch (Exception exception) + { + WriteErrorForException(Component, "CreateCertificateProfile", exception); + } + } + + /// + /// Routes the enrollment configuration to the block matching the enrollment type, so callers supply one + /// dictionary rather than choosing between four mutually exclusive parameters. + /// + internal static InfisicalCertificateProfileWriteRequestDto BuildRequest( + string slug, string description, string caId, string certificatePolicyId, + string enrollmentType, string issuerType, bool autoRenew, int? renewBeforeDays, + IDictionary defaults, IDictionary enrollmentConfig, bool autoRenewBound) + { + InfisicalCertificateProfileWriteRequestDto request = new InfisicalCertificateProfileWriteRequestDto + { + Slug = slug, + Description = description, + CaId = caId, + CertificatePolicyId = certificatePolicyId, + EnrollmentType = enrollmentType, + IssuerType = issuerType, + Defaults = ToJsonObject(defaults) + }; + + System.Collections.Generic.Dictionary config = ToJsonObject(enrollmentConfig); + + if (string.Equals(enrollmentType, "est", StringComparison.OrdinalIgnoreCase)) { request.EstConfig = config; } + else if (string.Equals(enrollmentType, "acme", StringComparison.OrdinalIgnoreCase)) { request.AcmeConfig = config; } + else if (string.Equals(enrollmentType, "scep", StringComparison.OrdinalIgnoreCase)) { request.ScepConfig = config; } + else + { + if (config == null && (autoRenewBound || renewBeforeDays.HasValue)) + { + config = new System.Collections.Generic.Dictionary(); + } + + if (config != null) + { + if (autoRenewBound) { config["autoRenew"] = autoRenew; } + if (renewBeforeDays.HasValue) { config["renewBeforeDays"] = renewBeforeDays.Value; } + } + + request.ApiConfig = config; + } + + return request; + } + } + + /// + /// Updates a certificate profile. Only the supplied values are sent. + /// + [Cmdlet(VerbsCommon.Set, "InfisicalCertificateProfile", SupportsShouldProcess = true)] + [OutputType(typeof(InfisicalCertificateProfile))] + public sealed class SetInfisicalCertificateProfileCmdlet : InfisicalPkiWriteCmdletBase + { + private const string Component = "SetInfisicalCertificateProfileCmdlet"; + + [Parameter(Mandatory = true, Position = 0, ValueFromPipelineByPropertyName = true)] + [Alias("Id", "CertificateProfileId")] + public string ProfileId { get; set; } + + [Parameter] public string ProjectId { get; set; } + [Parameter] public string Slug { get; set; } + [Parameter] public string Description { get; set; } + [Parameter] public string CaId { get; set; } + [Parameter] public string CertificatePolicyId { get; set; } + + [Parameter] + [ValidateSet("api", "est", "acme", "scep")] + public string EnrollmentType { get; set; } + + [Parameter] public SwitchParameter AutoRenew { get; set; } + [Parameter] public int? RenewBeforeDays { get; set; } + [Parameter] public IDictionary Defaults { get; set; } + [Parameter] public IDictionary EnrollmentConfig { get; set; } + [Parameter] public SwitchParameter PassThru { get; set; } + + protected override void ProcessRecord() + { + try + { + InfisicalConnection connection = InfisicalSessionManager.RequireCurrent(); + ProjectId = ResolveCertManagerProjectId(connection, ProjectId); + if (string.IsNullOrEmpty(ProjectId)) { return; } + + if (!ShouldProcess(ProfileId, "Update certificate profile")) { return; } + + InfisicalCertificateProfileWriteRequestDto request = NewInfisicalCertificateProfileCmdlet.BuildRequest( + Slug, Description, CaId, CertificatePolicyId, + string.IsNullOrEmpty(EnrollmentType) ? "api" : EnrollmentType, + null, AutoRenew.IsPresent, RenewBeforeDays, Defaults, EnrollmentConfig, + MyInvocation.BoundParameters.ContainsKey("AutoRenew")); + + // Only sent when the caller asked for it; the API keeps the stored value otherwise. + if (!MyInvocation.BoundParameters.ContainsKey("EnrollmentType")) { request.EnrollmentType = null; } + + InfisicalPkiManagementClient client = new InfisicalPkiManagementClient(HttpClient, Logger); + InfisicalCertificateProfile updated = client.WriteCertificateProfile(connection, ProjectId, ProfileId, request); + + if (PassThru.IsPresent) { WriteObject(updated); } + } + catch (Exception exception) + { + WriteErrorForException(Component, "UpdateCertificateProfile", exception); + } + } + } + + /// + /// Deletes a certificate profile. + /// + [Cmdlet(VerbsCommon.Remove, "InfisicalCertificateProfile", SupportsShouldProcess = true, ConfirmImpact = ConfirmImpact.High)] + public sealed class RemoveInfisicalCertificateProfileCmdlet : InfisicalPkiWriteCmdletBase + { + private const string Component = "RemoveInfisicalCertificateProfileCmdlet"; + + [Parameter(Mandatory = true, Position = 0, ValueFromPipelineByPropertyName = true)] + [Alias("Id", "CertificateProfileId")] + public string ProfileId { get; set; } + + [Parameter] public string ProjectId { get; set; } + [Parameter] public SwitchParameter PassThru { get; set; } + + protected override void ProcessRecord() + { + try + { + InfisicalConnection connection = InfisicalSessionManager.RequireCurrent(); + ProjectId = ResolveCertManagerProjectId(connection, ProjectId); + if (string.IsNullOrEmpty(ProjectId)) { return; } + + if (!ShouldProcess(ProfileId, "Delete certificate profile")) { return; } + + InfisicalPkiManagementClient client = new InfisicalPkiManagementClient(HttpClient, Logger); + client.DeleteCertificateProfile(connection, ProjectId, ProfileId); + + if (PassThru.IsPresent) { WriteObject(ProfileId); } + } + catch (Exception exception) + { + WriteErrorForException(Component, "DeleteCertificateProfile", exception); + } + } + } +} diff --git a/src/PSInfisicalAPI/Cmdlets/InfisicalPkiWriteCmdletBase.cs b/src/PSInfisicalAPI/Cmdlets/InfisicalPkiWriteCmdletBase.cs new file mode 100644 index 0000000..0cae310 --- /dev/null +++ b/src/PSInfisicalAPI/Cmdlets/InfisicalPkiWriteCmdletBase.cs @@ -0,0 +1,164 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Globalization; +using System.Management.Automation; + +namespace PSInfisicalAPI.Cmdlets +{ + /// + /// Shared plumbing for the cmdlets that create, change, or remove Certificate Manager configuration. + /// + /// Infisical's policy and profile bodies are deeply nested — allowed/required/denied constraint objects, + /// per-enrollment-type config blocks — and expressing every leaf as a parameter would produce cmdlets nobody + /// could read. Those structures are accepted as dictionaries instead, matching how -Subject and + /// -Metadata already work, and are converted here. + /// + /// + public abstract class InfisicalPkiWriteCmdletBase : InfisicalCmdletBase + { + /// + /// Converts a caller's dictionary into the plain string-keyed form the serializer emits as a JSON + /// object. Nested dictionaries and collections are converted too, so a hashtable of hashtables round + /// trips into the nested body Infisical expects. + /// + /// + /// The constraint vocabulary Infisical expects in lower case. PowerShell callers naturally capitalise + /// hashtable keys, so @{ Required = ... } has to reach the API as "required" or the request + /// is rejected for a missing constraint. Every other key is passed through untouched, since the rest of + /// the body uses camelCase field names the caller supplies verbatim. + /// + private static readonly Dictionary CanonicalKeys = new Dictionary(StringComparer.OrdinalIgnoreCase) + { + { "allowed", "allowed" }, + { "required", "required" }, + { "denied", "denied" }, + { "type", "type" } + }; + + internal static Dictionary ToJsonObject(IDictionary source) + { + if (source == null) { return null; } + + Dictionary result = new Dictionary(StringComparer.Ordinal); + foreach (DictionaryEntry entry in source) + { + if (entry.Key == null) { continue; } + string key = Convert.ToString(entry.Key, CultureInfo.InvariantCulture); + if (string.IsNullOrWhiteSpace(key)) { continue; } + + key = key.Trim(); + + string canonical; + if (CanonicalKeys.TryGetValue(key, out canonical)) { key = canonical; } + + object value = ToJsonValue(entry.Value); + + // An empty list is dropped rather than sent. "allowed": [] does not read as "unconstrained" to + // Infisical, it reads as "allow nothing", which is never what a caller writing @{ Allowed = @() } + // intends; omitting the key leaves that dimension genuinely unconstrained. + List asList = value as List; + if (asList != null && asList.Count == 0) { continue; } + + result[key] = value; + } + + return result.Count > 0 ? result : null; + } + + /// + /// Converts a list of dictionaries, which is the shape Infisical uses for policy subject and SAN + /// constraints. + /// + internal static List> ToJsonObjectList(IEnumerable source) + { + if (source == null) { return null; } + + List> result = new List>(); + foreach (object item in source) + { + IDictionary dictionary = UnwrapDictionary(item); + if (dictionary == null) { continue; } + + Dictionary converted = ToJsonObject(dictionary); + if (converted == null) { continue; } + + // An entry carrying only "type" states a dimension without constraining it, which Infisical + // rejects outright. Dropping it is what the caller meant by leaving the lists empty. + bool hasConstraint = converted.ContainsKey("allowed") || converted.ContainsKey("required") || converted.ContainsKey("denied"); + if (!hasConstraint) { continue; } + + result.Add(converted); + } + + return result.Count > 0 ? result : null; + } + + private static object ToJsonValue(object value) + { + if (value == null) { return null; } + + IDictionary nested = UnwrapDictionary(value); + if (nested != null) { return ToJsonObject(nested); } + + if (value is string) { return value; } + + IEnumerable enumerable = UnwrapEnumerable(value); + if (enumerable != null) + { + List items = new List(); + foreach (object item in enumerable) { items.Add(ToJsonValue(item)); } + return items; + } + + return value; + } + + /// + /// PowerShell hands parameters over wrapped in PSObject often enough that unwrapping has to happen at + /// every level, not only at the top. + /// + private static IDictionary UnwrapDictionary(object value) + { + if (value == null) { return null; } + if (value is IDictionary direct) { return direct; } + + PSObject wrapper = value as PSObject; + if (wrapper != null && wrapper.BaseObject is IDictionary wrapped) { return wrapped; } + + return null; + } + + private static IEnumerable UnwrapEnumerable(object value) + { + if (value is IEnumerable direct) { return direct; } + + PSObject wrapper = value as PSObject; + if (wrapper != null && wrapper.BaseObject is IEnumerable wrapped) { return wrapped; } + + return null; + } + + /// + /// Formats an expiry the way Infisical's date validator accepts it. + /// + internal static string ToApiTimestamp(DateTimeOffset? value) + { + if (!value.HasValue) { return null; } + return value.Value.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ss.fffZ", CultureInfo.InvariantCulture); + } + + internal static List ToStringList(IEnumerable values) + { + if (values == null) { return null; } + + List result = new List(); + foreach (string value in values) + { + if (!string.IsNullOrWhiteSpace(value)) { result.Add(value.Trim()); } + } + + return result.Count > 0 ? result : null; + } + } +} diff --git a/src/PSInfisicalAPI/Cmdlets/PkiSubscriberWriteCmdlets.cs b/src/PSInfisicalAPI/Cmdlets/PkiSubscriberWriteCmdlets.cs new file mode 100644 index 0000000..68c3b57 --- /dev/null +++ b/src/PSInfisicalAPI/Cmdlets/PkiSubscriberWriteCmdlets.cs @@ -0,0 +1,189 @@ +using System; +using System.Collections; +using System.Management.Automation; +using PSInfisicalAPI.Connections; +using PSInfisicalAPI.Models; +using PSInfisicalAPI.Pki; + +namespace PSInfisicalAPI.Cmdlets +{ + /// + /// Creates a PKI subscriber: a named enrollment identity pinning one common name, its SAN allowlist, and its + /// key usages. + /// + [Cmdlet(VerbsCommon.New, "InfisicalPkiSubscriber", SupportsShouldProcess = true)] + [OutputType(typeof(InfisicalPkiSubscriber))] + public sealed class NewInfisicalPkiSubscriberCmdlet : InfisicalPkiWriteCmdletBase + { + private const string Component = "NewInfisicalPkiSubscriberCmdlet"; + + [Parameter(Mandatory = true, Position = 0)] public string Name { get; set; } + + /// + /// The certificate signed for this subscriber must carry exactly this common name; Infisical rejects a + /// request whose CSR names anything else. + /// + [Parameter(Mandatory = true)] public string CommonName { get; set; } + + [Parameter(Mandatory = true)] public string CaId { get; set; } + [Parameter] public string ProjectId { get; set; } + [Parameter] public string Ttl { get; set; } + + /// Allowlist of subject alternative names. A CSR naming anything outside it is rejected. + [Parameter] public string[] SubjectAlternativeName { get; set; } + + [Parameter] public string[] KeyUsage { get; set; } + [Parameter] public string[] ExtendedKeyUsage { get; set; } + + [Parameter] + [ValidateSet("active", "disabled")] + public string Status { get; set; } = "active"; + + [Parameter] public SwitchParameter EnableAutoRenewal { get; set; } + [Parameter] public int? AutoRenewalPeriodInDays { get; set; } + + /// Additional subject attributes, as @{ organization = 'Contoso'; country = 'US' }. + [Parameter] public IDictionary Properties { get; set; } + + protected override void ProcessRecord() + { + try + { + InfisicalConnection connection = InfisicalSessionManager.RequireCurrent(); + ProjectId = ResolveCertManagerProjectId(connection, ProjectId); + if (string.IsNullOrEmpty(ProjectId)) { return; } + + if (!ShouldProcess(Name, "Create PKI subscriber")) { return; } + + InfisicalPkiSubscriberWriteRequestDto request = new InfisicalPkiSubscriberWriteRequestDto + { + Name = Name, + CommonName = CommonName, + CaId = CaId, + Status = Status, + Ttl = Ttl, + SubjectAlternativeNames = ToStringList(SubjectAlternativeName), + KeyUsages = ToStringList(KeyUsage), + ExtendedKeyUsages = ToStringList(ExtendedKeyUsage), + Properties = ToJsonObject(Properties) + }; + + if (MyInvocation.BoundParameters.ContainsKey("EnableAutoRenewal")) { request.EnableAutoRenewal = EnableAutoRenewal.IsPresent; } + if (AutoRenewalPeriodInDays.HasValue) { request.AutoRenewalPeriodInDays = AutoRenewalPeriodInDays.Value; } + + InfisicalPkiManagementClient client = new InfisicalPkiManagementClient(HttpClient, Logger); + WriteObject(client.WritePkiSubscriber(connection, ProjectId, null, request)); + } + catch (Exception exception) + { + WriteErrorForException(Component, "CreatePkiSubscriber", exception); + } + } + } + + /// + /// Updates a PKI subscriber. Only the supplied values are sent. + /// + [Cmdlet(VerbsCommon.Set, "InfisicalPkiSubscriber", SupportsShouldProcess = true)] + [OutputType(typeof(InfisicalPkiSubscriber))] + public sealed class SetInfisicalPkiSubscriberCmdlet : InfisicalPkiWriteCmdletBase + { + private const string Component = "SetInfisicalPkiSubscriberCmdlet"; + + [Parameter(Mandatory = true, Position = 0, ValueFromPipelineByPropertyName = true)] + [Alias("SubscriberName", "Slug")] + public string Name { get; set; } + + [Parameter] public string ProjectId { get; set; } + [Parameter] public string NewName { get; set; } + [Parameter] public string CommonName { get; set; } + [Parameter] public string CaId { get; set; } + [Parameter] public string Ttl { get; set; } + [Parameter] public string[] SubjectAlternativeName { get; set; } + [Parameter] public string[] KeyUsage { get; set; } + [Parameter] public string[] ExtendedKeyUsage { get; set; } + + [Parameter] + [ValidateSet("active", "disabled")] + public string Status { get; set; } + + [Parameter] public SwitchParameter EnableAutoRenewal { get; set; } + [Parameter] public int? AutoRenewalPeriodInDays { get; set; } + [Parameter] public IDictionary Properties { get; set; } + [Parameter] public SwitchParameter PassThru { get; set; } + + protected override void ProcessRecord() + { + try + { + InfisicalConnection connection = InfisicalSessionManager.RequireCurrent(); + ProjectId = ResolveCertManagerProjectId(connection, ProjectId); + if (string.IsNullOrEmpty(ProjectId)) { return; } + + if (!ShouldProcess(Name, "Update PKI subscriber")) { return; } + + InfisicalPkiSubscriberWriteRequestDto request = new InfisicalPkiSubscriberWriteRequestDto + { + Name = NewName, + CommonName = CommonName, + CaId = CaId, + Status = Status, + Ttl = Ttl, + SubjectAlternativeNames = ToStringList(SubjectAlternativeName), + KeyUsages = ToStringList(KeyUsage), + ExtendedKeyUsages = ToStringList(ExtendedKeyUsage), + Properties = ToJsonObject(Properties) + }; + + if (MyInvocation.BoundParameters.ContainsKey("EnableAutoRenewal")) { request.EnableAutoRenewal = EnableAutoRenewal.IsPresent; } + if (AutoRenewalPeriodInDays.HasValue) { request.AutoRenewalPeriodInDays = AutoRenewalPeriodInDays.Value; } + + InfisicalPkiManagementClient client = new InfisicalPkiManagementClient(HttpClient, Logger); + InfisicalPkiSubscriber updated = client.WritePkiSubscriber(connection, ProjectId, Name, request); + + if (PassThru.IsPresent) { WriteObject(updated); } + } + catch (Exception exception) + { + WriteErrorForException(Component, "UpdatePkiSubscriber", exception); + } + } + } + + /// + /// Deletes a PKI subscriber. + /// + [Cmdlet(VerbsCommon.Remove, "InfisicalPkiSubscriber", SupportsShouldProcess = true, ConfirmImpact = ConfirmImpact.High)] + public sealed class RemoveInfisicalPkiSubscriberCmdlet : InfisicalPkiWriteCmdletBase + { + private const string Component = "RemoveInfisicalPkiSubscriberCmdlet"; + + [Parameter(Mandatory = true, Position = 0, ValueFromPipelineByPropertyName = true)] + [Alias("SubscriberName", "Slug")] + public string Name { get; set; } + + [Parameter] public string ProjectId { get; set; } + [Parameter] public SwitchParameter PassThru { get; set; } + + protected override void ProcessRecord() + { + try + { + InfisicalConnection connection = InfisicalSessionManager.RequireCurrent(); + ProjectId = ResolveCertManagerProjectId(connection, ProjectId); + if (string.IsNullOrEmpty(ProjectId)) { return; } + + if (!ShouldProcess(Name, "Delete PKI subscriber")) { return; } + + InfisicalPkiManagementClient client = new InfisicalPkiManagementClient(HttpClient, Logger); + client.DeletePkiSubscriber(connection, ProjectId, Name); + + if (PassThru.IsPresent) { WriteObject(Name); } + } + catch (Exception exception) + { + WriteErrorForException(Component, "DeletePkiSubscriber", exception); + } + } + } +} diff --git a/src/PSInfisicalAPI/Endpoints/InfisicalEndpointNames.cs b/src/PSInfisicalAPI/Endpoints/InfisicalEndpointNames.cs index fad8a05..812c1e1 100644 --- a/src/PSInfisicalAPI/Endpoints/InfisicalEndpointNames.cs +++ b/src/PSInfisicalAPI/Endpoints/InfisicalEndpointNames.cs @@ -62,6 +62,31 @@ namespace PSInfisicalAPI.Endpoints public const string RetrieveCertificate = "RetrieveCertificate"; public const string GetCertificateBundle = "GetCertificateBundle"; public const string UpdateCertificateMetadata = "UpdateCertificateMetadata"; + + public const string CreateInternalCertificateAuthority = "CreateInternalCertificateAuthority"; + public const string UpdateInternalCertificateAuthority = "UpdateInternalCertificateAuthority"; + public const string DeleteInternalCertificateAuthority = "DeleteInternalCertificateAuthority"; + public const string GetCertificateAuthorityCsr = "GetCertificateAuthorityCsr"; + public const string SignIntermediateCertificateAuthority = "SignIntermediateCertificateAuthority"; + public const string ImportCertificateAuthorityCertificate = "ImportCertificateAuthorityCertificate"; + + public const string CreateCertificatePolicy = "CreateCertificatePolicy"; + public const string UpdateCertificatePolicy = "UpdateCertificatePolicy"; + public const string DeleteCertificatePolicy = "DeleteCertificatePolicy"; + + public const string CreateCertificateProfile = "CreateCertificateProfile"; + public const string UpdateCertificateProfile = "UpdateCertificateProfile"; + public const string DeleteCertificateProfile = "DeleteCertificateProfile"; + + public const string CreateCertificateApplication = "CreateCertificateApplication"; + public const string UpdateCertificateApplication = "UpdateCertificateApplication"; + public const string DeleteCertificateApplication = "DeleteCertificateApplication"; + public const string AddCertificateApplicationProfiles = "AddCertificateApplicationProfiles"; + public const string RemoveCertificateApplicationProfile = "RemoveCertificateApplicationProfile"; + + public const string CreatePkiSubscriber = "CreatePkiSubscriber"; + public const string UpdatePkiSubscriber = "UpdatePkiSubscriber"; + public const string DeletePkiSubscriber = "DeletePkiSubscriber"; public const string SignCertificateBySubscriber = "SignCertificateBySubscriber"; public const string SignCertificateByCa = "SignCertificateByCa"; public const string IssueCertificateByProfile = "IssueCertificateByProfile"; diff --git a/src/PSInfisicalAPI/Endpoints/InfisicalEndpointRegistry.cs b/src/PSInfisicalAPI/Endpoints/InfisicalEndpointRegistry.cs index 714c16b..aa313d1 100644 --- a/src/PSInfisicalAPI/Endpoints/InfisicalEndpointRegistry.cs +++ b/src/PSInfisicalAPI/Endpoints/InfisicalEndpointRegistry.cs @@ -715,6 +715,43 @@ namespace PSInfisicalAPI.Endpoints ContainsSecretMaterialInResponse = true }); + #region PKI configuration management + + Add(map, new InfisicalEndpointDefinition { Name = InfisicalEndpointNames.CreateInternalCertificateAuthority, Resource = "Pki", Version = "v1", Method = "POST", Template = "/api/v1/cert-manager/ca/internal", RequiresAuthorization = true }); + Add(map, new InfisicalEndpointDefinition { Name = InfisicalEndpointNames.CreateInternalCertificateAuthority, Resource = "Pki", Version = "v1", Method = "POST", Template = "/api/v1/pki/ca/internal", RequiresAuthorization = true }); + + Add(map, new InfisicalEndpointDefinition { Name = InfisicalEndpointNames.UpdateInternalCertificateAuthority, Resource = "Pki", Version = "v1", Method = "PATCH", Template = "/api/v1/cert-manager/ca/internal/{caId}", RequiresAuthorization = true }); + Add(map, new InfisicalEndpointDefinition { Name = InfisicalEndpointNames.UpdateInternalCertificateAuthority, Resource = "Pki", Version = "v1", Method = "PATCH", Template = "/api/v1/pki/ca/internal/{caId}", RequiresAuthorization = true }); + + Add(map, new InfisicalEndpointDefinition { Name = InfisicalEndpointNames.DeleteInternalCertificateAuthority, Resource = "Pki", Version = "v1", Method = "DELETE", Template = "/api/v1/cert-manager/ca/internal/{caId}", RequiresAuthorization = true }); + Add(map, new InfisicalEndpointDefinition { Name = InfisicalEndpointNames.DeleteInternalCertificateAuthority, Resource = "Pki", Version = "v1", Method = "DELETE", Template = "/api/v1/pki/ca/internal/{caId}", RequiresAuthorization = true }); + + // Standing up a subordinate takes three calls: Infisical creates it pending, then the CSR is signed + // by the parent and imported back. + Add(map, new InfisicalEndpointDefinition { Name = InfisicalEndpointNames.GetCertificateAuthorityCsr, Resource = "Pki", Version = "v1", Method = "GET", Template = "/api/v1/pki/ca/{caId}/csr", RequiresAuthorization = true }); + Add(map, new InfisicalEndpointDefinition { Name = InfisicalEndpointNames.SignIntermediateCertificateAuthority, Resource = "Pki", Version = "v1", Method = "POST", Template = "/api/v1/pki/ca/{caId}/sign-intermediate", RequiresAuthorization = true, ContainsSecretMaterialInResponse = true }); + Add(map, new InfisicalEndpointDefinition { Name = InfisicalEndpointNames.ImportCertificateAuthorityCertificate, Resource = "Pki", Version = "v1", Method = "POST", Template = "/api/v1/pki/ca/{caId}/import-certificate", RequiresAuthorization = true }); + + Add(map, new InfisicalEndpointDefinition { Name = InfisicalEndpointNames.CreateCertificatePolicy, Resource = "Pki", Version = "v1", Method = "POST", Template = "/api/v1/cert-manager/certificate-policies", RequiresAuthorization = true }); + Add(map, new InfisicalEndpointDefinition { Name = InfisicalEndpointNames.UpdateCertificatePolicy, Resource = "Pki", Version = "v1", Method = "PATCH", Template = "/api/v1/cert-manager/certificate-policies/{policyId}", RequiresAuthorization = true }); + Add(map, new InfisicalEndpointDefinition { Name = InfisicalEndpointNames.DeleteCertificatePolicy, Resource = "Pki", Version = "v1", Method = "DELETE", Template = "/api/v1/cert-manager/certificate-policies/{policyId}", RequiresAuthorization = true }); + + Add(map, new InfisicalEndpointDefinition { Name = InfisicalEndpointNames.CreateCertificateProfile, Resource = "Pki", Version = "v1", Method = "POST", Template = "/api/v1/cert-manager/certificate-profiles", RequiresAuthorization = true }); + Add(map, new InfisicalEndpointDefinition { Name = InfisicalEndpointNames.UpdateCertificateProfile, Resource = "Pki", Version = "v1", Method = "PATCH", Template = "/api/v1/cert-manager/certificate-profiles/{profileId}", RequiresAuthorization = true }); + Add(map, new InfisicalEndpointDefinition { Name = InfisicalEndpointNames.DeleteCertificateProfile, Resource = "Pki", Version = "v1", Method = "DELETE", Template = "/api/v1/cert-manager/certificate-profiles/{profileId}", RequiresAuthorization = true }); + + Add(map, new InfisicalEndpointDefinition { Name = InfisicalEndpointNames.CreateCertificateApplication, Resource = "Pki", Version = "v1", Method = "POST", Template = "/api/v1/cert-manager/applications", RequiresAuthorization = true }); + Add(map, new InfisicalEndpointDefinition { Name = InfisicalEndpointNames.UpdateCertificateApplication, Resource = "Pki", Version = "v1", Method = "PATCH", Template = "/api/v1/cert-manager/applications/{applicationId}", RequiresAuthorization = true }); + Add(map, new InfisicalEndpointDefinition { Name = InfisicalEndpointNames.DeleteCertificateApplication, Resource = "Pki", Version = "v1", Method = "DELETE", Template = "/api/v1/cert-manager/applications/{applicationId}", RequiresAuthorization = true }); + Add(map, new InfisicalEndpointDefinition { Name = InfisicalEndpointNames.AddCertificateApplicationProfiles, Resource = "Pki", Version = "v1", Method = "POST", Template = "/api/v1/cert-manager/applications/{applicationId}/profiles", RequiresAuthorization = true }); + Add(map, new InfisicalEndpointDefinition { Name = InfisicalEndpointNames.RemoveCertificateApplicationProfile, Resource = "Pki", Version = "v1", Method = "DELETE", Template = "/api/v1/cert-manager/applications/{applicationId}/profiles/{profileId}", RequiresAuthorization = true }); + + Add(map, new InfisicalEndpointDefinition { Name = InfisicalEndpointNames.CreatePkiSubscriber, Resource = "Pki", Version = "v1", Method = "POST", Template = "/api/v1/pki/subscribers", RequiresAuthorization = true }); + Add(map, new InfisicalEndpointDefinition { Name = InfisicalEndpointNames.UpdatePkiSubscriber, Resource = "Pki", Version = "v1", Method = "PATCH", Template = "/api/v1/pki/subscribers/{subscriberName}", RequiresAuthorization = true }); + Add(map, new InfisicalEndpointDefinition { Name = InfisicalEndpointNames.DeletePkiSubscriber, Resource = "Pki", Version = "v1", Method = "DELETE", Template = "/api/v1/pki/subscribers/{subscriberName}", RequiresAuthorization = true }); + + #endregion + Add(map, new InfisicalEndpointDefinition { Name = InfisicalEndpointNames.UpdateCertificateMetadata, diff --git a/src/PSInfisicalAPI/Pki/InfisicalPkiManagementClient.cs b/src/PSInfisicalAPI/Pki/InfisicalPkiManagementClient.cs new file mode 100644 index 0000000..0f40883 --- /dev/null +++ b/src/PSInfisicalAPI/Pki/InfisicalPkiManagementClient.cs @@ -0,0 +1,443 @@ +using System; +using System.Collections.Generic; +using PSInfisicalAPI.Connections; +using PSInfisicalAPI.Endpoints; +using PSInfisicalAPI.Errors; +using PSInfisicalAPI.Http; +using PSInfisicalAPI.Logging; +using PSInfisicalAPI.Models; +using PSInfisicalAPI.Serialization; + +namespace PSInfisicalAPI.Pki +{ + /// + /// Create, update, and delete operations for the objects that make up a Certificate Manager environment: + /// certificate authorities, policies, profiles, applications, and PKI subscribers. + /// + /// Kept apart from , which reads and issues. These are the operations that + /// change how a project is configured rather than what it has issued. + /// + /// + internal sealed class InfisicalPkiManagementClient + { + private const string Component = "PkiManagementClient"; + + private readonly InfisicalApiInvoker _invoker; + private readonly IInfisicalLogger _logger; + private readonly JsonInfisicalSerializer _serializer; + + public InfisicalPkiManagementClient(IInfisicalHttpClient httpClient, IInfisicalLogger logger) + { + if (httpClient == null) { throw new ArgumentNullException(nameof(httpClient)); } + _logger = logger ?? NullInfisicalLogger.Instance; + _invoker = new InfisicalApiInvoker(httpClient); + _serializer = new JsonInfisicalSerializer(); + } + + #region Certificate authority + + public InfisicalCertificateAuthority CreateInternalCertificateAuthority( + InfisicalConnection connection, + string projectId, + string name, + string type, + string commonName, + string organization, + string organizationalUnit, + string country, + string state, + string locality, + string keyAlgorithm, + string friendlyName, + string notBefore, + string notAfter, + int? maxPathLength) + { + Require(connection, projectId); + if (string.IsNullOrEmpty(name)) { throw new InfisicalConfigurationException("Name is required."); } + if (string.IsNullOrEmpty(type)) { throw new InfisicalConfigurationException("Type is required."); } + + bool isRoot = string.Equals(type, "root", StringComparison.OrdinalIgnoreCase); + + InfisicalCreateInternalCaRequestDto request = new InfisicalCreateInternalCaRequestDto + { + ProjectId = projectId, + Name = name, + Status = "active", + Configuration = new InfisicalCreateInternalCaConfigurationDto + { + Type = type, + CommonName = commonName ?? string.Empty, + Organization = organization ?? string.Empty, + OrganizationalUnit = organizationalUnit ?? string.Empty, + Country = country ?? string.Empty, + State = state ?? string.Empty, + Locality = locality ?? string.Empty, + KeyAlgorithm = keyAlgorithm, + FriendlyName = friendlyName, + // Infisical self-signs on creation only for a root, and only when given an expiry. A + // subordinate is created pending a certificate and signed separately. + NotBefore = isRoot ? notBefore : null, + NotAfter = isRoot ? notAfter : null, + MaxPathLength = isRoot ? maxPathLength : null + } + }; + + return Execute( + connection, + InfisicalEndpointNames.CreateInternalCertificateAuthority, + null, + _serializer.Serialize(request), + string.Concat("create ", type, " certificate authority '", name, "'"), + body => + { + InfisicalInternalCaSingleResponseDto dto = _serializer.Deserialize(body); + InfisicalInternalCaResponseDto inner = dto != null ? (dto.CertificateAuthority ?? dto.Ca) : null; + return InfisicalCaMapper.Map(inner, projectId); + }); + } + + public InfisicalCertificateAuthority UpdateInternalCertificateAuthority(InfisicalConnection connection, string projectId, string caId, string name, string status) + { + Require(connection, projectId); + if (string.IsNullOrEmpty(caId)) { throw new InfisicalConfigurationException("CaId is required."); } + if (string.IsNullOrEmpty(name) && string.IsNullOrEmpty(status)) + { + throw new InfisicalConfigurationException("Supply -Name or -Status; there is nothing else to update on an internal certificate authority."); + } + + InfisicalUpdateInternalCaRequestDto request = new InfisicalUpdateInternalCaRequestDto { ProjectId = projectId, Name = name, Status = status }; + + return Execute( + connection, + InfisicalEndpointNames.UpdateInternalCertificateAuthority, + new Dictionary { { "caId", caId } }, + _serializer.Serialize(request), + string.Concat("update certificate authority '", caId, "'"), + body => + { + InfisicalInternalCaSingleResponseDto dto = _serializer.Deserialize(body); + InfisicalInternalCaResponseDto inner = dto != null ? (dto.CertificateAuthority ?? dto.Ca) : null; + return InfisicalCaMapper.Map(inner, projectId); + }); + } + + public void DeleteInternalCertificateAuthority(InfisicalConnection connection, string projectId, string caId) + { + Require(connection, projectId); + if (string.IsNullOrEmpty(caId)) { throw new InfisicalConfigurationException("CaId is required."); } + + Execute( + connection, + InfisicalEndpointNames.DeleteInternalCertificateAuthority, + new Dictionary { { "caId", caId } }, + null, + string.Concat("delete certificate authority '", caId, "'"), + body => null, + BuildProjectQuery(projectId)); + } + + /// + /// Signs a newly created subordinate with its parent and imports the result, taking it from + /// pending-certificate to active. Infisical creates a subordinate without a certificate and exposes no + /// single call that does this. + /// + public void CompleteSubordinateCertificateAuthority(InfisicalConnection connection, string projectId, string subordinateCaId, string parentCaId, string notAfter, int maxPathLength) + { + Require(connection, projectId); + if (string.IsNullOrEmpty(subordinateCaId)) { throw new InfisicalConfigurationException("CaId is required."); } + if (string.IsNullOrEmpty(parentCaId)) { throw new InfisicalConfigurationException("ParentCaId is required."); } + if (string.IsNullOrEmpty(notAfter)) { throw new InfisicalConfigurationException("NotAfter is required to sign a subordinate certificate authority."); } + + string csr = Execute( + connection, + InfisicalEndpointNames.GetCertificateAuthorityCsr, + new Dictionary { { "caId", subordinateCaId } }, + null, + string.Concat("read the certificate signing request for '", subordinateCaId, "'"), + body => + { + InfisicalCaCsrResponseDto dto = _serializer.Deserialize(body); + return dto != null ? dto.Csr : null; + }); + + if (string.IsNullOrEmpty(csr)) + { + throw new InfisicalApiException(string.Concat("Certificate authority '", subordinateCaId, "' returned no certificate signing request to sign.")); + } + + InfisicalSignIntermediateRequestDto signRequest = new InfisicalSignIntermediateRequestDto + { + Csr = csr, + NotAfter = notAfter, + MaxPathLength = maxPathLength + }; + + InfisicalSignIntermediateResponseDto signed = Execute( + connection, + InfisicalEndpointNames.SignIntermediateCertificateAuthority, + new Dictionary { { "caId", parentCaId } }, + _serializer.Serialize(signRequest), + string.Concat("sign '", subordinateCaId, "' with '", parentCaId, "'"), + body => _serializer.Deserialize(body)); + + if (signed == null || string.IsNullOrEmpty(signed.Certificate)) + { + throw new InfisicalApiException("Signing the subordinate certificate authority returned no certificate."); + } + + InfisicalImportCaCertificateRequestDto importRequest = new InfisicalImportCaCertificateRequestDto + { + Certificate = signed.Certificate, + CertificateChain = signed.CertificateChain + }; + + Execute( + connection, + InfisicalEndpointNames.ImportCertificateAuthorityCertificate, + new Dictionary { { "caId", subordinateCaId } }, + _serializer.Serialize(importRequest), + string.Concat("import the signed certificate onto '", subordinateCaId, "'"), + body => null); + } + + #endregion + + #region Certificate policy + + public InfisicalCertificatePolicy WriteCertificatePolicy(InfisicalConnection connection, string projectId, string policyId, InfisicalCertificatePolicyWriteRequestDto request) + { + Require(connection, projectId); + if (request == null) { throw new ArgumentNullException(nameof(request)); } + + bool creating = string.IsNullOrEmpty(policyId); + request.ProjectId = projectId; + + return Execute( + connection, + creating ? InfisicalEndpointNames.CreateCertificatePolicy : InfisicalEndpointNames.UpdateCertificatePolicy, + creating ? null : new Dictionary { { "policyId", policyId } }, + _serializer.Serialize(request), + creating ? string.Concat("create certificate policy '", request.Name, "'") : string.Concat("update certificate policy '", policyId, "'"), + body => + { + InfisicalCertificatePolicySingleResponseDto dto = _serializer.Deserialize(body); + return InfisicalCertificatePolicyMapper.Map(dto != null ? dto.CertificatePolicy : null, projectId); + }); + } + + public void DeleteCertificatePolicy(InfisicalConnection connection, string projectId, string policyId) + { + Require(connection, projectId); + if (string.IsNullOrEmpty(policyId)) { throw new InfisicalConfigurationException("PolicyId is required."); } + + Execute( + connection, + InfisicalEndpointNames.DeleteCertificatePolicy, + new Dictionary { { "policyId", policyId } }, + null, + string.Concat("delete certificate policy '", policyId, "'"), + body => null, + BuildProjectQuery(projectId)); + } + + #endregion + + #region Certificate profile + + public InfisicalCertificateProfile WriteCertificateProfile(InfisicalConnection connection, string projectId, string profileId, InfisicalCertificateProfileWriteRequestDto request) + { + Require(connection, projectId); + if (request == null) { throw new ArgumentNullException(nameof(request)); } + + bool creating = string.IsNullOrEmpty(profileId); + request.ProjectId = projectId; + + return Execute( + connection, + creating ? InfisicalEndpointNames.CreateCertificateProfile : InfisicalEndpointNames.UpdateCertificateProfile, + creating ? null : new Dictionary { { "profileId", profileId } }, + _serializer.Serialize(request), + creating ? string.Concat("create certificate profile '", request.Slug, "'") : string.Concat("update certificate profile '", profileId, "'"), + body => + { + InfisicalCertificateProfileSingleResponseDto dto = _serializer.Deserialize(body); + return InfisicalCertificateProfileMapper.Map(dto != null ? dto.CertificateProfile : null, projectId); + }); + } + + public void DeleteCertificateProfile(InfisicalConnection connection, string projectId, string profileId) + { + Require(connection, projectId); + if (string.IsNullOrEmpty(profileId)) { throw new InfisicalConfigurationException("ProfileId is required."); } + + Execute( + connection, + InfisicalEndpointNames.DeleteCertificateProfile, + new Dictionary { { "profileId", profileId } }, + null, + string.Concat("delete certificate profile '", profileId, "'"), + body => null, + BuildProjectQuery(projectId)); + } + + #endregion + + #region Certificate application + + public InfisicalCertificateApplication WriteCertificateApplication(InfisicalConnection connection, string projectId, string applicationId, InfisicalCertificateApplicationWriteRequestDto request) + { + Require(connection, projectId); + if (request == null) { throw new ArgumentNullException(nameof(request)); } + + bool creating = string.IsNullOrEmpty(applicationId); + request.ProjectId = projectId; + + return Execute( + connection, + creating ? InfisicalEndpointNames.CreateCertificateApplication : InfisicalEndpointNames.UpdateCertificateApplication, + creating ? null : new Dictionary { { "applicationId", applicationId } }, + _serializer.Serialize(request), + creating ? string.Concat("create certificate application '", request.Name, "'") : string.Concat("update certificate application '", applicationId, "'"), + body => + { + InfisicalCertificateApplicationSingleResponseDto dto = _serializer.Deserialize(body); + return InfisicalCertificateApplicationMapper.Map(dto != null ? dto.Application : null, projectId); + }); + } + + public void DeleteCertificateApplication(InfisicalConnection connection, string projectId, string applicationId) + { + Require(connection, projectId); + if (string.IsNullOrEmpty(applicationId)) { throw new InfisicalConfigurationException("ApplicationId is required."); } + + Execute( + connection, + InfisicalEndpointNames.DeleteCertificateApplication, + new Dictionary { { "applicationId", applicationId } }, + null, + string.Concat("delete certificate application '", applicationId, "'"), + body => null, + BuildProjectQuery(projectId)); + } + + public void AddCertificateApplicationProfiles(InfisicalConnection connection, string projectId, string applicationId, IEnumerable profileIds) + { + Require(connection, projectId); + if (string.IsNullOrEmpty(applicationId)) { throw new InfisicalConfigurationException("ApplicationId is required."); } + + List ids = new List(); + if (profileIds != null) { foreach (string id in profileIds) { if (!string.IsNullOrEmpty(id)) { ids.Add(id); } } } + if (ids.Count == 0) { throw new InfisicalConfigurationException("At least one ProfileId is required."); } + + InfisicalCertificateApplicationWriteRequestDto request = new InfisicalCertificateApplicationWriteRequestDto { ProjectId = projectId, ProfileIds = ids }; + + Execute( + connection, + InfisicalEndpointNames.AddCertificateApplicationProfiles, + new Dictionary { { "applicationId", applicationId } }, + _serializer.Serialize(request), + string.Concat("attach ", ids.Count.ToString(System.Globalization.CultureInfo.InvariantCulture), " profile(s) to application '", applicationId, "'"), + body => null); + } + + public void RemoveCertificateApplicationProfile(InfisicalConnection connection, string projectId, string applicationId, string profileId) + { + Require(connection, projectId); + if (string.IsNullOrEmpty(applicationId)) { throw new InfisicalConfigurationException("ApplicationId is required."); } + if (string.IsNullOrEmpty(profileId)) { throw new InfisicalConfigurationException("ProfileId is required."); } + + Execute( + connection, + InfisicalEndpointNames.RemoveCertificateApplicationProfile, + new Dictionary { { "applicationId", applicationId }, { "profileId", profileId } }, + null, + string.Concat("detach profile '", profileId, "' from application '", applicationId, "'"), + body => null, + BuildProjectQuery(projectId)); + } + + #endregion + + #region PKI subscriber + + public InfisicalPkiSubscriber WritePkiSubscriber(InfisicalConnection connection, string projectId, string subscriberName, InfisicalPkiSubscriberWriteRequestDto request) + { + Require(connection, projectId); + if (request == null) { throw new ArgumentNullException(nameof(request)); } + + bool creating = string.IsNullOrEmpty(subscriberName); + request.ProjectId = projectId; + + return Execute( + connection, + creating ? InfisicalEndpointNames.CreatePkiSubscriber : InfisicalEndpointNames.UpdatePkiSubscriber, + creating ? null : new Dictionary { { "subscriberName", subscriberName } }, + _serializer.Serialize(request), + creating ? string.Concat("create PKI subscriber '", request.Name, "'") : string.Concat("update PKI subscriber '", subscriberName, "'"), + // The subscriber routes return the record unwrapped, matching how GetPkiSubscriber reads it. + body => InfisicalPkiSubscriberMapper.Map(_serializer.Deserialize(body), projectId)); + } + + public void DeletePkiSubscriber(InfisicalConnection connection, string projectId, string subscriberName) + { + Require(connection, projectId); + if (string.IsNullOrEmpty(subscriberName)) { throw new InfisicalConfigurationException("Name is required."); } + + Execute( + connection, + InfisicalEndpointNames.DeletePkiSubscriber, + new Dictionary { { "subscriberName", subscriberName } }, + null, + string.Concat("delete PKI subscriber '", subscriberName, "'"), + body => null, + BuildProjectQuery(projectId)); + } + + #endregion + + #region Plumbing + + private static void Require(InfisicalConnection connection, string projectId) + { + if (connection == null) { throw new ArgumentNullException(nameof(connection)); } + if (string.IsNullOrEmpty(projectId)) { throw new InfisicalConfigurationException("ProjectId is required."); } + } + + private static List> BuildProjectQuery(string projectId) + { + // DELETE carries no body, so the project has to travel on the query string for Infisical's + // project-injection middleware to see it. + return new List> { new KeyValuePair("projectId", projectId) }; + } + + private T Execute( + InfisicalConnection connection, + string endpointName, + Dictionary pathParameters, + string body, + string description, + Func project, + List> query = null) + { + try + { + _logger.Information(Component, string.Concat("Attempting to ", description, ". Please Wait...")); + InfisicalHttpResponse response = _invoker.InvokeWithCandidateFallback(connection, endpointName, endpointName, pathParameters, query, body); + string payload = response.Body; + response.Clear(); + + T result = project(payload); + _logger.Information(Component, string.Concat("Infisical operation succeeded: ", description, ".")); + return result; + } + catch (Exception) + { + _logger.Error(Component, string.Concat("Infisical operation failed: ", description, ".")); + throw; + } + } + + #endregion + } +} diff --git a/src/PSInfisicalAPI/Pki/InfisicalPkiManagementDtos.cs b/src/PSInfisicalAPI/Pki/InfisicalPkiManagementDtos.cs new file mode 100644 index 0000000..545d8c6 --- /dev/null +++ b/src/PSInfisicalAPI/Pki/InfisicalPkiManagementDtos.cs @@ -0,0 +1,152 @@ +using System.Collections.Generic; +using Newtonsoft.Json; + +namespace PSInfisicalAPI.Pki +{ + #region Certificate authority + + internal sealed class InfisicalCreateInternalCaRequestDto + { + [JsonProperty("projectId", NullValueHandling = NullValueHandling.Ignore)] public string ProjectId { get; set; } + [JsonProperty("name")] public string Name { get; set; } + [JsonProperty("status")] public string Status { get; set; } + [JsonProperty("configuration")] public InfisicalCreateInternalCaConfigurationDto Configuration { get; set; } + } + + internal sealed class InfisicalCreateInternalCaConfigurationDto + { + [JsonProperty("type")] public string Type { get; set; } + [JsonProperty("commonName")] public string CommonName { get; set; } + [JsonProperty("organization")] public string Organization { get; set; } + [JsonProperty("ou")] public string OrganizationalUnit { get; set; } + [JsonProperty("country")] public string Country { get; set; } + [JsonProperty("province")] public string State { get; set; } + [JsonProperty("locality")] public string Locality { get; set; } + [JsonProperty("keyAlgorithm")] public string KeyAlgorithm { get; set; } + [JsonProperty("friendlyName", NullValueHandling = NullValueHandling.Ignore)] public string FriendlyName { get; set; } + [JsonProperty("notBefore", NullValueHandling = NullValueHandling.Ignore)] public string NotBefore { get; set; } + [JsonProperty("notAfter", NullValueHandling = NullValueHandling.Ignore)] public string NotAfter { get; set; } + [JsonProperty("maxPathLength", NullValueHandling = NullValueHandling.Ignore)] public int? MaxPathLength { get; set; } + } + + internal sealed class InfisicalUpdateInternalCaRequestDto + { + [JsonProperty("projectId", NullValueHandling = NullValueHandling.Ignore)] public string ProjectId { get; set; } + [JsonProperty("name", NullValueHandling = NullValueHandling.Ignore)] public string Name { get; set; } + [JsonProperty("status", NullValueHandling = NullValueHandling.Ignore)] public string Status { get; set; } + } + + internal sealed class InfisicalCaCsrResponseDto + { + [JsonProperty("csr")] public string Csr { get; set; } + } + + internal sealed class InfisicalSignIntermediateRequestDto + { + [JsonProperty("csr")] public string Csr { get; set; } + [JsonProperty("notBefore", NullValueHandling = NullValueHandling.Ignore)] public string NotBefore { get; set; } + [JsonProperty("notAfter")] public string NotAfter { get; set; } + [JsonProperty("maxPathLength")] public int MaxPathLength { get; set; } + } + + internal sealed class InfisicalSignIntermediateResponseDto + { + [JsonProperty("certificate")] public string Certificate { get; set; } + [JsonProperty("certificateChain")] public string CertificateChain { get; set; } + [JsonProperty("issuingCaCertificate")] public string IssuingCaCertificate { get; set; } + [JsonProperty("serialNumber")] public string SerialNumber { get; set; } + } + + internal sealed class InfisicalImportCaCertificateRequestDto + { + [JsonProperty("certificate")] public string Certificate { get; set; } + [JsonProperty("certificateChain")] public string CertificateChain { get; set; } + } + + #endregion + + #region Certificate policy + + internal sealed class InfisicalCertificatePolicyWriteRequestDto + { + [JsonProperty("projectId", NullValueHandling = NullValueHandling.Ignore)] public string ProjectId { get; set; } + [JsonProperty("name", NullValueHandling = NullValueHandling.Ignore)] public string Name { get; set; } + [JsonProperty("description", NullValueHandling = NullValueHandling.Ignore)] public string Description { get; set; } + [JsonProperty("subject", NullValueHandling = NullValueHandling.Ignore)] public List> Subject { get; set; } + [JsonProperty("sans", NullValueHandling = NullValueHandling.Ignore)] public List> Sans { get; set; } + [JsonProperty("keyUsages", NullValueHandling = NullValueHandling.Ignore)] public Dictionary KeyUsages { get; set; } + [JsonProperty("extendedKeyUsages", NullValueHandling = NullValueHandling.Ignore)] public Dictionary ExtendedKeyUsages { get; set; } + [JsonProperty("algorithms", NullValueHandling = NullValueHandling.Ignore)] public Dictionary Algorithms { get; set; } + [JsonProperty("validity", NullValueHandling = NullValueHandling.Ignore)] public Dictionary Validity { get; set; } + [JsonProperty("basicConstraints", NullValueHandling = NullValueHandling.Ignore)] public Dictionary BasicConstraints { get; set; } + } + + internal sealed class InfisicalCertificatePolicySingleResponseDto + { + [JsonProperty("certificatePolicy")] public InfisicalCertificatePolicyResponseDto CertificatePolicy { get; set; } + } + + #endregion + + #region Certificate profile + + internal sealed class InfisicalCertificateProfileWriteRequestDto + { + [JsonProperty("projectId", NullValueHandling = NullValueHandling.Ignore)] public string ProjectId { get; set; } + [JsonProperty("slug", NullValueHandling = NullValueHandling.Ignore)] public string Slug { get; set; } + [JsonProperty("description", NullValueHandling = NullValueHandling.Ignore)] public string Description { get; set; } + [JsonProperty("caId", NullValueHandling = NullValueHandling.Ignore)] public string CaId { get; set; } + [JsonProperty("certificatePolicyId", NullValueHandling = NullValueHandling.Ignore)] public string CertificatePolicyId { get; set; } + [JsonProperty("enrollmentType", NullValueHandling = NullValueHandling.Ignore)] public string EnrollmentType { get; set; } + [JsonProperty("issuerType", NullValueHandling = NullValueHandling.Ignore)] public string IssuerType { get; set; } + [JsonProperty("apiConfig", NullValueHandling = NullValueHandling.Ignore)] public Dictionary ApiConfig { get; set; } + [JsonProperty("scepConfig", NullValueHandling = NullValueHandling.Ignore)] public Dictionary ScepConfig { get; set; } + [JsonProperty("estConfig", NullValueHandling = NullValueHandling.Ignore)] public Dictionary EstConfig { get; set; } + [JsonProperty("acmeConfig", NullValueHandling = NullValueHandling.Ignore)] public Dictionary AcmeConfig { get; set; } + [JsonProperty("defaults", NullValueHandling = NullValueHandling.Ignore)] public Dictionary Defaults { get; set; } + } + + internal sealed class InfisicalCertificateProfileSingleResponseDto + { + [JsonProperty("certificateProfile")] public InfisicalCertificateProfileResponseDto CertificateProfile { get; set; } + } + + #endregion + + #region Certificate application + + internal sealed class InfisicalCertificateApplicationWriteRequestDto + { + [JsonProperty("projectId", NullValueHandling = NullValueHandling.Ignore)] public string ProjectId { get; set; } + [JsonProperty("name", NullValueHandling = NullValueHandling.Ignore)] public string Name { get; set; } + [JsonProperty("description", NullValueHandling = NullValueHandling.Ignore)] public string Description { get; set; } + [JsonProperty("profileIds", NullValueHandling = NullValueHandling.Ignore)] public List ProfileIds { get; set; } + } + + internal sealed class InfisicalCertificateApplicationSingleResponseDto + { + [JsonProperty("application")] public InfisicalCertificateApplicationResponseDto Application { get; set; } + } + + #endregion + + #region PKI subscriber + + internal sealed class InfisicalPkiSubscriberWriteRequestDto + { + [JsonProperty("projectId", NullValueHandling = NullValueHandling.Ignore)] public string ProjectId { get; set; } + [JsonProperty("caId", NullValueHandling = NullValueHandling.Ignore)] public string CaId { get; set; } + [JsonProperty("name", NullValueHandling = NullValueHandling.Ignore)] public string Name { get; set; } + [JsonProperty("commonName", NullValueHandling = NullValueHandling.Ignore)] public string CommonName { get; set; } + [JsonProperty("status", NullValueHandling = NullValueHandling.Ignore)] public string Status { get; set; } + [JsonProperty("ttl", NullValueHandling = NullValueHandling.Ignore)] public string Ttl { get; set; } + [JsonProperty("subjectAlternativeNames", NullValueHandling = NullValueHandling.Ignore)] public List SubjectAlternativeNames { get; set; } + [JsonProperty("keyUsages", NullValueHandling = NullValueHandling.Ignore)] public List KeyUsages { get; set; } + [JsonProperty("extendedKeyUsages", NullValueHandling = NullValueHandling.Ignore)] public List ExtendedKeyUsages { get; set; } + [JsonProperty("enableAutoRenewal", NullValueHandling = NullValueHandling.Ignore)] public bool? EnableAutoRenewal { get; set; } + [JsonProperty("autoRenewalPeriodInDays", NullValueHandling = NullValueHandling.Ignore)] public int? AutoRenewalPeriodInDays { get; set; } + [JsonProperty("properties", NullValueHandling = NullValueHandling.Ignore)] public Dictionary Properties { get; set; } + } + + #endregion +}