在Windows 2016上,尝试将新的IISAdministration模块用于Powershell(而不是WebAdministration),如何为特定网站设置Require Ssl复选框?

C:\Windows\System32\inetsrv\config\applicationHost.config中找到system.webserver/security/access的引用,当使用IIS管理器,给定网站的SSL设置时,该复选框值的保存位置:

<location path="MySite">
    <system.webServer>
        <security>
            <access sslFlags="Ssl" />
        </security>
    </system.webServer>
</location>

最佳答案

回答我关于后代的问题。

IISAdministration的New-IISSiteBinding cmdlet确实使我感到困惑。

  • 首先,这不是我的默认Windows 2016(从aws镜像加载)的一部分,因此我必须先执行Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force然后再执行Install-Module -Name IISAdministration -Force来更新到IISAdministration 1.1。您不能使用Update-Module,因为IISAdministration 1.0未随NuGet一起安装,它是Win 2016的一部分。
  • 其次,此属性上的SslFlag属性与SslFlagsRequire Ssl无关。可以将SslFlag上的New-IISSiteBinding设置为None, Sni, CentralCertStore。在IIS管理器中,这等效于单击网站,然后单击右侧的“绑定(bind)”链接,然后单击“添加/编辑”以及“需要服务器名称指示”复选框。

  • IISAdministration cmdlet Get-IISConfigSection是必需的。以下代码在网站上设置Require Ssl(在IIS管理器中等效于单击网站,然后单击“SSL设置”图标,“需要SSL”复选框):
    Import-Module IISAdministration
    $ConfigSection = Get-IISConfigSection -SectionPath "system.webServer/security/access" -Location "MyWebSite"
    #to set:
    Set-IISConfigAttributeValue -AttributeName sslFlags -AttributeValue Ssl -ConfigElement $ConfigSection
    #to read:
    Get-IISConfigAttributeValue -ConfigElement $ConfigSection -AttributeName sslFlags
    

    这些也可以通过管道传输。此sslFlags的可能值为:无,Ssl,SslNegotiateCert,SslRequireCert,SslMapCert,Ssl128(请参阅Access Security access)

    07-24 16:40