Я хочу импортировать сертификат SSL, когда существующий отпечаток сертификата соответствует сайту - PullRequest
0 голосов
/ 11 февраля 2020

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

Пример У меня есть файл pfx с отпечатком большого пальца = XXXXXX, и необходимо проверить сценарий, если есть любой отпечаток, как указано выше, на моей машине или на любом удаленном сервере, а затем сертификат, который у меня есть, необходимо заменить или импортировать в местоположение.

Код

Clear-Host

$certPath = 'C:\TEMP\Sample.pfx'
$CertificatePassword = 'XXXXXX'
$SiteName = "SampleTest"
$HostName = "Sitebinding.com"
$SiteFolder = Join-Path -Path 'C:\inetpub\wwwroot' -ChildPath $SiteName

Write-Host 'Import pfx certificate' $certPath
$certRootStore = “LocalMachine”
$certStore = "My"
$pfx = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2
$pfx.Import($certPath,$CertificatePassword,"Exportable,PersistKeySet") 
$store = New-Object System.Security.Cryptography.X509Certificates.X509Store($certStore,$certRootStore) 
$store.Open('ReadWrite')
$store.Add($pfx) 
$store.Close() 
$certThumbprint = $pfx.Thumbprint


#Write-Host 'Add website' $SiteName
#New-WebSite -Name $SiteName -PhysicalPath $SiteFolder -Force
#$IISSite = "IIS:\Sites\$SiteName"
#Set-ItemProperty $IISSite -name  Bindings -value @{protocol="https";bindingInformation="*:443:$HostName"}
#if($applicationPool) { Set-ItemProperty $IISSite -name  ApplicationPool -value $applicationPool}

Write-Host 'Bind certificate with Thumbprint' $certThumbprint
#$obj = get-webconfiguration "//sites/site[@name='$SiteName']"
$obj = Get-WebBinding $SiteName -Port 443
#$binding = $obj.bindings.Collection[0]
#$method = $binding.Methods["AddSslCertificate"]
$method = $obj.Methods["AddSslCertificate"]
$methodInstance = $method.CreateInstance()
$methodInstance.Input.SetAttributeValue("certificateHash", $certThumbprint)
$methodInstance.Input.SetAttributeValue("certificateStoreName", $certStore)
$methodInstance.Execute()```

Thanks In Advance.

1 Ответ

0 голосов
/ 12 февраля 2020

Кажется, что вы могли бы сделать оператор if, который включает запрос Cert: PSDrive для отпечатка. Затем обновляйте только привязку на основе условия.

if (Get-ChildItem Cert:\LocalMachine -Recurse | Where Thumbprint -eq $certThumbprint) {
    # Update Binding
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...