Проблема при обновлении сертификата IIS в Powershell

Я пытаюсь автоматизировать обновление сертификатов в IIS через powershell, и все идет нормально, за исключением того, что скрипт не перезапишет существующий сертификат, не удалив его сначала. Я хочу сделать это изящно. Вот строка, которая вызывает проблему, есть идеи?

New-Item "IIS:\SslBindings\*!${Port}!${HostName}" -Thumbprint 
$NewCertThumbprint -SslFlags 1

И вот ошибка:

New-Item : Cannot create a file when that file already exists
At C:\Scripts\SSL_Check.ps1:20 (the line above) char:13
+             New-Item "IIS:\SslBindings\*!${Port}!${HostName}" -Thumbprint $NewCe ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [New-Item], Win32Exception
    + FullyQualifiedErrorId : System.ComponentModel.Win32Exception,Microsoft.PowerShell.Commands.NewItemCommand

(Я использовал запросы отпечатков пальцев в качестве переменных, чтобы различать старые и новые сертификаты).

Copy-Item перезаписывается по умолчанию

Scepticalist 29.11.2018 14:48

Хммм, спасибо за это, теперь я получаю новую ошибку: «Копировать элемент: не может быть найден параметр, который соответствует имени параметра« Отпечаток »».

Colliwhopper 29.11.2018 15:17

$ CurrentCert = "E6760F37773D17FC5F3DDA192B5B82D738BCC3BE" $ NewCert = "5F1C6318A7614DDEDAEFE6C81963426DD4611FDD" Если (обновление $ CurrentCert -eq $ binding - это привязка NewCert), Thumbchaprints сертификата хоста {Write-Host "разные. Copy-Item "IIS: \ SslBindings *! $ {Port}! $ {HostName}" -Thumbprint $ NewCert -SslFlags 1 IISReset}

Colliwhopper 29.11.2018 15:21

не уверен, как сделать так, чтобы это выглядело опрятнее в комментариях.

Colliwhopper 29.11.2018 15:31

Если вам нужно это сделать, просто отредактируйте исходный пост. В любом случае, я бы заранее использовал Remove-Item, но также проверял этот предыдущий вопрос: stackoverflow.com/questions/22765648/…

Scepticalist 29.11.2018 15:47

Глубоко внутри Windows использует HTTP API для связывания сертификатов с их привязками, docs.microsoft.com/en-us/windows/desktop/http/show-sslcert Таким образом, вам нужно удалить сопоставление со старым сертификатом и добавить новое сопоставление с новым. Я думаю, поэтому ваш текущий скрипт (он должен использовать тот же базовый HTTP API) не может его перезаписать.

Lex Li 29.11.2018 21:22

Да, я закончил тем, что сделал это, но это отстой, без изящного обновления сертификата :(

Colliwhopper 29.11.2018 22:44
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
7
694
1

Ответы 1

Я бы сначала протестировал, но что-то вроде этого должно работать на основе: iis-7-and-the-webadministration-snapin

Это должно вызвать замену элемента:

New-Item -Path "IIS: \ Sites" -Name $ HostName -Type Site -Bindings @ {protocol = "https"; bindingInformation = "*: $ Port:"; thumbprint = $ NewCertThumbprint} -force

или вы можете сделать то же самое, используя элемент набора, чтобы изменить то, что уже есть

Set-Item -Path "IIS: \ Sites" -Name $ HostName -Type Site -Bindings @ {protocol = "https"; bindingInformation = "*: $ Port:"; thumbprint = $ NewCertThumbprint} -force

Исходя из вашего исходного сообщения, вы сможете просто добавить силы в его конец:

Новый элемент "IIS: \ SslBindings *! $ {Port}! $ {HostName}" -Thumbprint $ NewCertThumbprint -SslFlags 1 -force

Другие вопросы по теме