使用 Powershell 更改服务器主页 FTP SSL 证书
Change SERVER'S Home FTP SSL Certificate with Powershell
首先,我要指出的是,我指的不是默认站点,而是服务器的“主页”(IIS 指的是它)。谢谢。
我有一个 public IP 地址和 IIS 3 个网站和 2 个 FTP 站点。没问题,多亏了命名绑定。但是,在“正确”选择上述命名绑定上的 path/certificate 时,IIS 有点崩溃。我不记得我使用的 link 但您必须在“主页”级别指定 FTP SSL 证书 AND 在站点级别才能建立安全FTP 连接。
我使用 Certify 来 manage/renew 我的 SSL 证书。由于上述问题;我创建了一个包含两个子域的证书,并更新了一个 FTP 站点。然后我有一个成功运行的任务,它在完成时将新证书推送到另一个 FTP 站点(下面是文件的副本)。
Import-Module WebAdministration
$configItem = 'ftpServer.security.ssl.serverCertHash'
$thumb = Get-ItemProperty "IIS:\Sites\FTP 1" -Name ftpServer.security.ssl.serverCertHash.Value
Set-ItemProperty "IIS:\Sites\Default Web Site" -Name $configItem -Value $thumb
Set-ItemProperty "IIS:\Sites\FTP 2" -Name $configItem -Value $thumb
如您所见,它也为“默认网站”设置了 FTP SSL 证书 - 只是尝试将其作为修复。但是,这不是我需要的。我需要做的是设置来自 Powershell 的顶级“主页”FTP SSL 证书,如下所示可导航。
我尝试搜索一个命令,尝试了几个我认为可能有用的命令,但到目前为止都没有成功。
提前致谢
所以,经过更多的翻找,我设法找到了一种方法。
TLDR;
新的 PowerShell 脚本是:
Import-Module WebAdministration
$configItem = 'ftpServer.security.ssl.serverCertHash'
$thumb = Get-ItemProperty "IIS:\Sites\FTP 1" -Name ftpServer.security.ssl.serverCertHash.Value
Set-ItemProperty "IIS:\Sites\FTP 2" -Name $configItem -Value $thumb
C:\windows\system32\inetsrv\appcmd.exe set config -section:system.applicationHost/sites /siteDefaults.ftpServer.security.ssl.serverCertHash:"$thumb" /commit:apphost
因此,在研究时我发现了一篇关于 FTP Over SSL 的 Microsoft 文章,其中提到了 applicationHost.config(@BruceZhang 也提到了)。滚动浏览后,我发现 <siteDefaults>
就在最后一个 </site>
之后。那里有 SSL 证书的 属性(路径“<ftpServer>
/<security>
/<ssl>
”)。进一步翻箱倒柜,我发现 appcmd
可用于更新此配置文件。瞧,我制作了上面(最后一行)更新的 PowerShell 脚本。
首先,我要指出的是,我指的不是默认站点,而是服务器的“主页”(IIS 指的是它)。谢谢。
我有一个 public IP 地址和 IIS 3 个网站和 2 个 FTP 站点。没问题,多亏了命名绑定。但是,在“正确”选择上述命名绑定上的 path/certificate 时,IIS 有点崩溃。我不记得我使用的 link 但您必须在“主页”级别指定 FTP SSL 证书 AND 在站点级别才能建立安全FTP 连接。
我使用 Certify 来 manage/renew 我的 SSL 证书。由于上述问题;我创建了一个包含两个子域的证书,并更新了一个 FTP 站点。然后我有一个成功运行的任务,它在完成时将新证书推送到另一个 FTP 站点(下面是文件的副本)。
Import-Module WebAdministration
$configItem = 'ftpServer.security.ssl.serverCertHash'
$thumb = Get-ItemProperty "IIS:\Sites\FTP 1" -Name ftpServer.security.ssl.serverCertHash.Value
Set-ItemProperty "IIS:\Sites\Default Web Site" -Name $configItem -Value $thumb
Set-ItemProperty "IIS:\Sites\FTP 2" -Name $configItem -Value $thumb
如您所见,它也为“默认网站”设置了 FTP SSL 证书 - 只是尝试将其作为修复。但是,这不是我需要的。我需要做的是设置来自 Powershell 的顶级“主页”FTP SSL 证书,如下所示可导航。
我尝试搜索一个命令,尝试了几个我认为可能有用的命令,但到目前为止都没有成功。
提前致谢
所以,经过更多的翻找,我设法找到了一种方法。
TLDR;
新的 PowerShell 脚本是:
Import-Module WebAdministration
$configItem = 'ftpServer.security.ssl.serverCertHash'
$thumb = Get-ItemProperty "IIS:\Sites\FTP 1" -Name ftpServer.security.ssl.serverCertHash.Value
Set-ItemProperty "IIS:\Sites\FTP 2" -Name $configItem -Value $thumb
C:\windows\system32\inetsrv\appcmd.exe set config -section:system.applicationHost/sites /siteDefaults.ftpServer.security.ssl.serverCertHash:"$thumb" /commit:apphost
因此,在研究时我发现了一篇关于 FTP Over SSL 的 Microsoft 文章,其中提到了 applicationHost.config(@BruceZhang 也提到了)。滚动浏览后,我发现 <siteDefaults>
就在最后一个 </site>
之后。那里有 SSL 证书的 属性(路径“<ftpServer>
/<security>
/<ssl>
”)。进一步翻箱倒柜,我发现 appcmd
可用于更新此配置文件。瞧,我制作了上面(最后一行)更新的 PowerShell 脚本。