Octopus Deploy-Развертывание.сценарий ps1 для настройки Привязок SSL в IIS

использование сценария развертывания octopus для создания найденных веб-сайтов здесь

Я пытаюсь настроить веб-сайт, который использует SSL. Я изменил http -> https и переменная установлена в это $MyWebAppIisBindings = "*:433:"

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

у меня есть один сертификат под названием 'webserver', который можно выбрать в поле со списком в диалоговом окне изменить привязки сайта в Диспетчере IIS 7. выбор этого вручную делает работу SSL ожидаемой.

Что Powershell cmdlet нужно ли добавлять в сценарий развертывания, чтобы связать мой сертификат с моей привязкой к IIS?

(Я полный Powershell noob, пожалуйста, не предполагайте, что я знаю что-нибудь об этом в вашем ответе)

EDIT: я немного продвинулся, но я все еще потерян

# think I need to do something like this to get the certificate 
# Get-Item cert:LocalMachineMy$siteCertThumb 
# but I have no idea how to assign it to the 443 binding

3 ответов


чтобы расширить ответ Джареда, вот полный скрипт из недавнего проекта, который использует HTTP и HTTPS:

#
# Settings
#---------------
$appPoolName = ("Kraken-Pool-" + $OctopusEnvironmentName)
$siteName = ("Kraken - " + $OctopusEnvironmentName) 
$siteBindings = ":80:octopushq.com"
$siteBindingsSecure = ":443:octopushq.com"
$siteCertificate = "CERT:\LocalMachine\WebHosting\A347FC4B77A2C176E451D8CE4973C7D0FB3E19AA"
$appPoolFrameworkVersion = "v4.0"
$webRoot = (resolve-path .)

# Installation
#---------------
Import-Module WebAdministration

cd IIS:\

$appPoolPath = ("IIS:\AppPools\" + $appPoolName)
$pool = Get-Item $appPoolPath -ErrorAction SilentlyContinue
if (!$pool) { 
    Write-Host "App pool does not exist, creating..." 
    new-item $appPoolPath
    $pool = Get-Item $appPoolPath
} else {
    Write-Host "App pool exists." 
}

Write-Host "Set .NET framework version:" $appPoolFrameworkVersion
Set-ItemProperty $appPoolPath managedRuntimeVersion $appPoolFrameworkVersion

Write-Host "Set identity..."
Set-ItemProperty $appPoolPath -name processModel -value @{identitytype="NetworkService"}

Write-Host "Checking site..."
$sitePath = ("IIS:\Sites\" + $siteName)
$site = Get-Item $sitePath -ErrorAction SilentlyContinue
if (!$site) { 
    Write-Host "Site does not exist, creating..." 
    $id = (dir iis:\sites | foreach {$_.id} | sort -Descending | select -first 1) + 1
    new-item $sitePath -bindings @{protocol="http";bindingInformation=$siteBindings} -id $id -physicalPath $webRoot
} else {
    Write-Host "Site exists. Complete"
}

Write-Host "Set app pool..."
Set-ItemProperty $sitePath -name applicationPool -value $appPoolName

Write-Host "Set bindings..."
Set-ItemProperty $sitePath -name bindings -value @{protocol="http";bindingInformation=$siteBindings}
New-ItemProperty $sitePath -name bindings -value @{protocol="https";bindingInformation=$siteBindingsSecure}
Get-Item $siteCertificate | Set-Item IIS://SslBindings/0.0.0.0!443

Write-Host "Set path..."
Set-ItemProperty $sitePath -name physicalPath -value "$webRoot"

Write-Host "IIS configuration complete!"

в 15below мы используем осьминога и построили помощник осьминога с открытым исходным кодом.

одна из функций в помощнике powershells включает установку в IIS и добавление SSL-сертификата.

сам проект можно найти здесь:https://github.com/15below/Ensconce

что касается использования помощника, сначала обратитесь к createWebSite.ps1. - это работает, если вы используете IIS6 или 7. Затем создайте пул приложений, веб-сайт и добавьте ssl сертификат.

вот небольшой пример

$deployTools = "D:\DeployTools\"
. $deployTools\createWebSite.ps1
CreateAppPool "MyAppPool"
CreateWebsite "MyWebsite" "D:\WebsiteDir" "MyAppPool" "MyAppName" "myWebsite.com" "D:\Logs\MyWebsite"
AddSslCertificate "MyWebsite" "CertificateName" "myWebsite.com"

вы также можете использовать инструмент ensconce для развертывания приложения и обновления любых данных конфигурации. - более подробную информацию об этом можно найти на GitHub wiki.


наряду с двумя изменениями, которые вы уже сделали,http -> https и 80 -> 443.

добавьте следующее в конец сценария развертывания. Где $siteCertThumb-отпечаток сертификата, хранящийся в LocalMachine\My store.

Write-Host "Add certificate to binding..."
Get-Item CERT:\LocalMachine\MY$siteCertThumb | New-Item IIS://SslBindings/$siteBindings