Iis 7 Powershell IIS7管理单元将SSL证书分配给https绑定

Iis 7 Powershell IIS7管理单元将SSL证书分配给https绑定,iis-7,powershell,web,ssl-certificate,Iis 7,Powershell,Web,Ssl Certificate,作为自动化构建过程的一部分,我们正在使用powershell脚本破坏和重建IIS站点 一旦我创建了AppPool和包含绑定信息的网站,我想为https绑定设置SSL证书。我找不到任何具体的例子;任何能证明这一点的地方 有什么想法吗 正在寻找仁慈的powershell god…我在这里找到了一个如何分配证书的示例 然而,对证书指纹进行硬编码似乎不是很优雅 ... 因此,如果有人知道更好的方法,我很高兴听到。以下是简单的方法: 首先确定要分配的证书并获取其指纹 e、 g.您的证书可能位于cert:

作为自动化构建过程的一部分,我们正在使用powershell脚本破坏和重建IIS站点

一旦我创建了AppPool和包含绑定信息的网站,我想为https绑定设置SSL证书。我找不到任何具体的例子;任何能证明这一点的地方

有什么想法吗


正在寻找仁慈的powershell god…

我在这里找到了一个如何分配证书的示例

然而,对证书指纹进行硬编码似乎不是很优雅
... 因此,如果有人知道更好的方法,我很高兴听到。

以下是简单的方法:

首先确定要分配的证书并获取其指纹

e、 g.您的证书可能位于cert:\LocalMachine\Root中

您可以通过以下方式获得指纹:

$thumb = (Get-ChildItem cert:\LocalMachine\Root | where-object { $_.Subject -like "YOUR STRING HERE*" } | Select-Object -First 1).Thumbprint
>


希望这对任何人都有帮助

您可以像这样简化脚本:

Get-ChildItem cert:\LocalMachine\Root | where { $_.Subject -like "YOUR STRING HERE*" } | select -First 1 | New-Item IIS:\SslBindings\0.0.0.0!443

使用0.0.0.0以所有托管IP(相当于IIS管理器中的“*”)为目标,或根据需要将其替换为特定IP。

您可以将以前的示例与在网站中创建https绑定合并

import-module webadministration
$computerName = $Env:Computername
$domainName = $Env:UserDnsDomain
New-WebBinding -Name "MyWebSite" -IP "*" -Port 443 -Protocol https
Get-ChildItem cert:\LocalMachine\My | where { $_.Subject -match "CN\=$Computername\.$DomainName" } | select -First 1 | New-Item IIS:\SslBindings\0.0.0.0!443

很好,一个有意义的答案,并且按照盒子上写的做。我无意冒犯其他人,但这个答案是完整而简洁的,我从来不需要知道指纹。:-)这个答案正确地引用了“本地计算机”下的“个人”证书存储,这是IIS正在使用的。其他答案则指向“受信任的根”存储。我不理解Get-ChildItem命令如何知道要附加哪个iis网站,因为我们没有在任何地方提及。我一直收到错误“New-Item:无法检索cmdlet的动态参数。无法枚举SSL绑定,错误代码234。”你能解决这个问题吗。我能够创建新绑定,但无法关联SSL证书
import-module webadministration
$computerName = $Env:Computername
$domainName = $Env:UserDnsDomain
New-WebBinding -Name "MyWebSite" -IP "*" -Port 443 -Protocol https
Get-ChildItem cert:\LocalMachine\My | where { $_.Subject -match "CN\=$Computername\.$DomainName" } | select -First 1 | New-Item IIS:\SslBindings\0.0.0.0!443