Я пытаюсь установить сертификат, выданный центром сертификации Digicert. Сначала я генерирую CSR (запрос на подпись сертификата), используя скрипт Powershell. Я помещаю сгенерированный CSR в текстовый файл и удаляю все разрывы строк, пробелы и возврат каретки. Я использую следующий скрипт для этого:
$CSR > C:\Scripts\CSR.txt
$path = "C:\Scripts\CSR.txt"
(Get-Content $path -Raw).Replace("`r`n","") | Set-Content $path -Force
(Get-Content $path -Raw).Replace(" ","") | Set-Content $path -Force
(Get-Content $path -Raw).Replace("`r`n","") | Set-Content $path -Force -NoNewline
После этого я хочу сделать http-звонок в digiCert, чтобы получить идентификатор сертификата. Для этого я использую следующий скрипт:
[Net.ServicePointManager]::SecurityProtocol = "tls12, tls11, tls"
$body = @"
{
"profile_name": "XXX",
"common_name": "XX",
"additional_dns_names": [
"XX",
"XX"
],
"csr":$CSRWithNoCRLF,
"signature_hash": "sha256",
"validity": {
"months": 36
},
"organization": {
"name": "XXX",
"units": [
]
}
}
"@
$header = @{
"Accept"="application/json"
"KEY"="XXXX"
"Content-Type"="application/json"
}
$response = Invoke-WebRequest -Uri "https://www.digicert.comXXXX" -Method Post -Body $body -Headers $header
$Content = $response.Content
Для поля csr в теле JSON я хочу напрямую скопировать содержимое файла C: \ Scripts \ CSR.txt. Я попробовал следующий подход, но он не работает.
$CSRWithNoCRLF = Get-Content $path
И используйте $ CSRWithNoCRLF в качестве значения для csr. Но Get-Content добавляет разрывы строк и возврат каретки и искажает значение CSR. Так что это не работает. Любая идея о том, как решить эту проблему?