Files
Backup/_NDGOV_WindowsTeam/ITD.Infra-Certificate-External.Sectigo/Public/Enroll-SectigoCertificateRequest.ps1
T
Zack Meier 1d304511b8 update
2026-04-15 15:45:50 -05:00

149 lines
3.1 KiB
PowerShell

Function Enroll-SectigoCertificateRequest {
[CmdletBinding()]
param (
[string]$ApiToken=$env:SectigoToken,
[int]$OrgId=8091, # 8091 friendly label is "Information Technology Department - Windows"
[Parameter(Mandatory=$true)]
[string]$subjAltNames,
[ValidateSet('IIS','IIS_OLD','IBM','LINUX','Apache','Tomcat')]
[string]$Type="IIS",
[string]$comment = "",
[Parameter(Mandatory=$true)]
[string]$dcvEmail,
[Parameter(Mandatory=$true)]
[ValidateSet('ECC',"RSA")]
[string]$KeyType,
[Parameter(Mandatory=$true)]
[string]$Csr, # Replace with your Sectigo Organization ID
[switch]$Test
)
if (-Not $ApiToken) {
$ApiToken=Read-Host "ApiToken:"
}
. $PSScriptRoot\..\Private\Set-Onload.ps1
[string]$RequestUrl= $BaseAPIUrl + "/api/ssl/v1/enroll"
Write-Verbose -Verbose "RequestUrl: $RequestUrl"
#$CertType=2369
#If ($subjAltNames) {
$CertType=2375
#}
$term=365
# 7: IBM HTTP Server
# 14: Microsoft IIS 5 or 6
switch ($ServerType.ToLower()) {
"iis" {
$ServerTypeCode = 35
}
"iis_old" {
$ServerTypeCode = 14
}
"ibm" {
$ServerTypeCode = 7
}
"linux" {
$ServerTypeCode = 'Linux'
}
"apache" {
$ServerTypeCode = 2
}
"tomcat" {
$ServerTypeCode = 12
}
default {
Write-Warning "Unsupported server type: $ServerType. Please provide specific instructions for manual installation."
}
}
#ignorded for now
# keySize = 2048,
# keyParam = 2048,
# algorithm = $KeyType
# keyGenerationMethod = PK_AGENT
$body = @{
orgId = $OrgId
subjAltNames = $subjAltNames
certType = $CertType
term = $term
serverType = $ServerTypeCode
comments = $comment
csr = $csr
externalRequester = $dcvEmail
}
#$b2= @{
# subjAltNames = $subjAltNames
#}
#
#if ($subjAltNames) {
# $body = $body + $b2
#}
$b3=@{
commonName = $commonName
keySize = 2048
keyParam = "2048"
algorithm = "RSA"
keyGenerationMethod = "PK_AGENT"
}
$b4=@{
commonName = $commonName
keyParam = "secp256r1"
algorithm = "ESS"
keyGenerationMethod = "PK_AGENT"
}
# $body = $body + $b2
#If ($KeyType -eq "rsa") {
# $body = $body + $b3
#} else {
# $body = $body + $b4
#}
If ($test) {
Return
}
# Convert the body to JSON
$jsonBody = $body | ConvertTo-Json
Write-Host $jsonBody
# --- Set up Authentication Headers ---
$headers = @{
"Authorization" = "Bearer $ApiToken"
"Content-Type" = "application/json"
}
# --- Send the Request ---
try {
$response=Invoke-RestMethod -Uri $RequestUrl -Method POST -Headers $headers -Body $jsonBody -ContentType "application/json"
return $response
}
catch {
Write-Error "Error during certificate enrollment: $($_.Exception.Message)"
if ($_.Exception.Response) {
$errorResponse = $_.Exception.Response.GetResponseStream()
$reader = New-Object System.IO.StreamReader($errorResponse)
$responseBody = $reader.ReadToEnd()
Write-Error "Sectigo API Error Response: $responseBody"
}
}
}