PoshCode Archive  Artifact [a94504469d]

Artifact a94504469d97f9f677a4b2ed3d9cdf5c76205e83dd11851b14f3c67a2a1f5425:

  • File Add-SSL-Cert-to-IIS.ps1 — part of check-in [7e2777a1b8] at 2018-06-10 14:09:42 on branch trunk — Here is the complete code, import pfx, add iis website, add ssl binding: (user: Brian H Madsen size: 1786)

# encoding: utf-8
# api: powershell
# title: Add SSL Cert to IIS
# description: Here is the complete code, import pfx, add iis website, add ssl binding:
# version: 0.1
# author: Brian H Madsen
# license: CC0
# x-poshcode-id: 6179
# x-archived: 2016-04-12T01:11:07
# x-published: 2016-01-13T18:58:00
#
#
$SiteName = "MySite"
$HostName = "localhost"
$CertificatePassword = '1234'
$UAPWebBrowserUrl ='https://localhost'
$SiteFolder = Join-Path -Path 'C:\inetpub\wwwroot' -ChildPath $SiteName
$certPath = 'c:\cert.pfx'


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 $IISApplicationPool }


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