使用PowerShell脚本注册在IIS 8中启用的SNI的HTTPS绑定 [英] Register a https binding with SNI enabled in IIS 8 with PowerShell Script

查看:20
本文介绍了使用PowerShell脚本注册在IIS 8中启用的SNI的HTTPS绑定的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我目前正在设置新的自动部署,我想知道如何以编程方式使用IIS 8上启用的SNI注册HTTPS绑定。该网站已存在,并且已安装了SSL证书。

PowerShell脚本传入了以下参数:

  • 网站名称
  • SSL证书指纹
  • 要绑定的域

假定已安装了SSL证书。

有人能帮我吗?

推荐答案

如果如您所说,证书已安装,并且应用程序池标识具有访问私钥的权限,则您应该能够注册新绑定,如下所示:

New-WebBinding -Name $WebsiteName -Protocol "https" -Port 443 -IPAddress $IPAddress -HostHeader $HostHeader -SslFlags $sslFlags

您当然需要在运行此代码之前设置变量,但是这些变量应该不言而喻。

设置$sslFlags值时,应根据下表进行设置:

0  No SNI
1  SNI Enabled
2  Non SNI binding which uses Central Certificate Store.
3  SNI binding which uses Central Certificate store

在您的情况下,应将其设置为1,因为您未使用中央证书存储。

一旦您准备好了SSL绑定,您就需要将该绑定与正确的证书相关联。我通过经验发现,最简单的方法是使用netsh.exe命令。直接使用PowerShell是可能的,但是,在调查和解决了许多小时的不同问题后,我发现Netsh更可靠。

这里的语法取决于如何设置绑定,但如果您使用的是SNI,则需要以下语法:(不用担心appid,值是什么并不重要)

netsh http add sslcert hostnameport=$($HostHeader):$($Port) certhash=$Thumbprint appid='{4dc3e181-e14b-4a21-b022-59fc669b0914}' certstorename=MY

此代码还需要设置变量。主机头应该是您的网站绑定到的DNS名称,端口很可能是443,变量$Thumbprint需要包含您要使用的证书的指纹或散列。您可以使用以下代码中的证书提供程序找到它:

$Thumbprint = (Get-ChildItem -Path cert:LocalMachineMy | Where-Object {$_.GetNameInfo("SimpleName",$false) -eq "my cert common name"}).Thumbprint

希望这对您有所帮助,如果您需要更多帮助,请更新问题。我在这方面做了很多工作。

这篇关于使用PowerShell脚本注册在IIS 8中启用的SNI的HTTPS绑定的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆