Edit:
I've crearted a powershell module to create and remove websites that includes this function, see it here post.
This little script will set the HTTPS binding. The certificate thumbprint is needed but the rest of the parameters are optional, defaulting to the most common option.
param ([String]$thumbprint, [String]$sitename="Default Web Site", [int]$port=443, [String]$hostheader)
if (-not($thumbprint))
{
Write-Error "Certificate Thumprint is needed"
exit
}
Import-Module WebAdministration
If (-not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator"))
{
Write-Warning "Run this script with elevated permissions"
exit
}
function AddHTTPSBinding([String]$thumbprint, [String]$sitename, [int]$port, [String]$hostheader)
{
$cert = Get-ChildItem cert:\LocalMachine\My | ?{$_.Thumbprint -eq $thumbprint}
if( -not($(gci iis:\sslbindings| ? {$_.Port -eq $port})))
{
New-Item IIS:\SslBindings\0.0.0.0!$port -Value $cert | out-null
if ($hostheader)
{
New-ItemProperty $(join-path iis:\Sites $sitename) -name bindings -value @{protocol="https";bindingInformation="*:$($port):$($hostheader)";certificateStoreName="My";certificateHash=$thumbprint}
}
else
{
New-ItemProperty $(join-path iis:\Sites $sitename) -name bindings -value @{protocol="https";bindingInformation="*:$($port):";certificateStoreName="My";certificateHash=$thumbprint}
}
}
else
{
Write-Warning "SSL binding already exists on port $port"
}
}
AddHTTPSBinding $thumbprint $sitename $port $hostheader
There is a New-WebBinding cmdlet in the WebAdministration module, but I think it needs to be used in conjunction with the Set-WebBinding to set the certificate and certificate store.
Thanks for this being able to test if a SSLBinding was on a specific port really helped me
ReplyDelete