Как поменять сертификаты на iis для всех сайтов с помощью powershell.

Задача переставить сертификат на всех сайтах так как заканчивается срок.

Экспортируем сертификат в IIS.

Как поменять сертификаты на iis для всех сайтов с помощью powershell.

После этого получаем хеш сертификата

Get-ChildItem -path cert:\LocalMachine\My

Как поменять сертификаты на iis для всех сайтов с помощью powershell.

$OLDCertificateThumbprint = "вставляем Thumbprint " # старый сертификат
$NEWCertificateThumbprint = "вставляем Thumbprint " # новый сертификат

#Show bindings where the old certificate is in use
Get-WebBinding | Where-Object { $_.certificateHash -eq $OLDCertificateThumbprint} | Format-Table

#Select bindings where the old certificate is in use and attach the new certificate
Get-WebBinding | Where-Object { $_.certificateHash -eq $OLDCertificateThumbprint} | ForEach-Object {
        Write-Host "Working on"  $_ 
        $_.RemoveSslCertificate()
        $_.AddSslCertificate($NEWCertificateThumbprint, 'My')
        }

#Show bindings where the new certificate is in use
Get-WebBinding | Where-Object { $_.certificateHash -eq $NEWCertificateThumbprint}


Проверить что поменялся сертификат

$OLDCertificateThumbprint = "вставляем Thumbprint " # старый сертификат 
$NEWCertificateThumbprint = "вставляем Thumbprint " # новый сертификат

Get-WebBinding | Where-Object { $_.certificateHash -eq $OLDCertificateThumbprint} | Format-Table

Get-WebBinding | Where-Object { $_.certificateHash -eq $NEWCertificateThumbprint} | Format-Table

Как поменять сертификаты на iis для всех сайтов с помощью powershell.

Добавить новый сертификат если не было у сайта сертификата.

Import-Module WebAdministration

# Get the latest certificate in store that applies to my site
$cert = (Get-ChildItem Cert:\LocalMachine\My |
    Where-Object {$_.Subject.Contains('*.adminbd.ru')} |
    Sort-Object -Descending {[System.DateTime]::Parse($_.GetExpirationDateString())} |
    Select-Object -First 1)
   
 Write-Host $cert


 Set-Location IIS:\Sites

 # Get all sites

Get-WebConfiguration -Filter "/system.applicationHost/sites/site[contains(@name, '.adminbd.ru')]/bindings/binding[@protocol='https']" | 
    Where-Object {$_.certificateHash -ne $cert.Thumbprint} | 
    % { 
        Write-Host $_
       # $_.RemoveSslCertificate()
        $_.AddSslCertificate($cert.Thumbprint, 'My') 
    }

 

 

Similar Posts:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *