如何从命令提示符向IIS7站点分配SSL证书

lp0sw83n  于 2023-03-08  发布在  其他
关注(0)|答案(9)|浏览(136)

您能否告知我是否可以使用APPCMD应用程序为IIS7中的网站分配SSL证书?
我熟悉用于设置HTTPS绑定的命令

appcmd set site /site.name:"A Site" /+bindings.[protocol='https',bindingInformation='*:443:www.mysite.com']

以及如何获取当前Map

%windir%\system32\inetsrv\Appcmd

但似乎找不到任何方法将站点Map到证书(例如证书散列)

aoyhnmkz

aoyhnmkz1#

答案是使用NETSH。

netsh http add sslcert ipport=0.0.0.0:443 certhash='baf9926b466e8565217b5e6287c97973dcd54874' appid='{ab3c58f7-8316-42e3-bc6e-771d4ce4b201}'
af7jpaap

af7jpaap2#

这对我帮助很大:Sukesh Ashok Kumar编写的从命令行为IIS设置SSL的简单指南。包括使用certutil/makecert导入/生成证书。
http://www.awesomeideas.net/post/How-to-configure-SSL-on-IIS7-under-Windows-2008-Server-Core.aspx
编辑:如果原来的网址是下来,它仍然可用through the Wayback Machine

brc7rcf0

brc7rcf03#

使用PowerShell和WebAdministration模块,您可以执行以下操作以将SSL证书分配给IIS站点:

# ensure you have the IIS module imported
Import-Module WebAdministration

cd IIS:\SslBindings
Get-Item cert:\LocalMachine\My\7ABF581E134280162AFFFC81E62011787B3B19B5 | New-Item 0.0.0.0!443

注意事项...值"7ABF581E134280162AFFFFC81E62011787B3B19B5"是要导入的证书的指纹。因此需要先将其导入证书存储区。New-Item cmdlet接受IP地址(所有IP为0.0.0.0)和端口。
有关详细信息,请参见http://learn.iis.net/page.aspx/491/powershell-snap-in-configuring-ssl-with-the-iis-powershell-snap-in/
我已经在Windows Server 2008 R2以及Windows Server 2012预发布版本中测试了这一点。

i34xakig

i34xakig4#

@大卫和@奥瑞普说得对。
但是,我确实想提到示例(www.example.com:443)中指定的ipport参数0.0.0.0是MSDN称为“未指定地址(IPv4:0.0.0.0或IPv6:[::])".
我去查了一下,所以我想我应该在这里记录下来,以保存其他人的时间。本文主要讨论SQL Server,但其中的信息仍然是相关的:
http://msdn.microsoft.com/en-us/library/ms186362.aspx

1szpjjfi

1szpjjfi5#

根据本文中的答案,我创建了一个脚本,它从pfx文件开始,但您可以跳过这一步。
这就是:

cd C:\Windows\System32\inetsrv

certutil -f -p "pa$$word" -importpfx "C:\temp\mycert.pfx"

REM The thumbprint is gained by installing the certificate, going to cert manager > personal, clicking on it, then getting the Thumbprint.
REM Be careful copying the thumbprint. It can add hidden characters, esp at the front.
REM appid can be any valid guid
netsh http add sslcert ipport=0.0.0.0:443 certhash=5de934dc39cme0234098234098dd111111111115 appid={75B2A5EC-5FD8-4B89-A29F-E5D038D5E289}

REM bind to all ip's with no domain. There are plenty of examples with domain binding on the web
appcmd set site "Default Web Site" /+bindings.[protocol='https',bindingInformation='*:443:']
xu3bshqb

xu3bshqb6#

如果您尝试在不使用MMC管理单元GUI的情况下执行IIS管理,则应使用powershell WebAdministration模块。
此博客上的其他答案不适用于Windows Server(2012)的更高版本

lnvxswe2

lnvxswe27#

使用PowerShell + netsh

$certificateName = 'example.com'
$thumbprint = Get-ChildItem -path cert:\LocalMachine\My | where { $_.Subject.StartsWith("CN=$certificateName") } | Select-Object -Expand Thumbprint
$guid = [guid]::NewGuid().ToString("B")
netsh http add sslcert ipport="0.0.0.0:443" certhash=$thumbprint certstorename=MY appid="$guid"

如果需要命名绑定,请将netsh调用替换为:

netsh http add sslcert hostnameport="$certificateName:443" certhash=$thumbprint certstorename=MY appid="$guid"
xn1cxnb4

xn1cxnb48#

通过IISAdministration1.1.0.0(https://www.powershellgallery.com/packages/IISAdministration/1.1.0.0),您可以使用以下代码将新HTTPS绑定添加到特定站点:

$thumbPrint = (gci Cert:\localmachine\My | Where-Object { $_.Subject -Like "certSubject*" }).Thumbprint
New-IISSiteBinding -Name "Site Name" -BindingInformation "*:443:" -CertificateThumbPrint $thumbPrint -CertStoreLocation My -Protocol https

查看现有绑定

Get-IISSiteBinding -Name "Site Name"

使用删除现有绑定

Remove-IISSiteBinding -Name "Site Name" -BindingInformation "*:443:" -Protocol https -Confirm:$False
deyfvvtc

deyfvvtc9#

具有一些重入功能:

$securePfxKey=ConvertTo-SecureString -String $mypwd -AsPlainText -Force
Import-PfxCertificate -FilePath MySpector.pfx -CertStoreLocation Cert:\LocalMachine\My -Password $securePfxKey
$mypfx=Get-PfxData -FilePath MySpector.pfx -Password $securePfxKey
$newThumbprint=$mypfx.EndEntityCertificates.Thumbprint
$applicationID="{4dc3e181-e14b-4a21-b022-59fc669b0914}" # hardcode it once
netsh http delete sslcert ipport=0.0.0.0:443
netsh http add sslcert ipport=0.0.0.0:443 certhash=$newThumbprint appid=$applicationID

相关问题