首页 > 解决方案 > 使用 Powershell 更改 SERVER 的 Home FTP SSL 证书

问题描述

首先,让我指出,我指的不是默认站点,而是服务器的“主页”(正如 IIS 所指的那样)。谢谢。


我有一个公共 IP 地址,在 IIS 3 个网站和 2 个 FTP 站点中。没问题,多亏了命名绑定。但是,在“正确”选择所述命名绑定的路径/证书时,IIS 有点崩溃。我不记得我使用的链接,但您必须在“家庭”级别站点级别指定 FTP SSL 证书,以便建立安全的 FTP 连接。

我使用 Certify 来管理/更新我的 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 设置顶级“Home”FTP SSL 证书,它可以导航,如下所示。

IIS 导航到

我尝试搜索一个命令,尝试了一些我认为可能有效的命令,但到目前为止都没有成功。

提前致谢

标签: powershellssliisftp

解决方案


所以,经过更多的翻找之后,我设法找到了一种方法。

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>” )。再翻一番,我发现可以用来更新这个配置文件。瞧,我生成了上面(最后一行)更新的 PowerShell 脚本。<security><ssl>appcmd


推荐阅读