【问题标题】:How to set Require SSL for an IIS web site using Powershell IISAdministration module on Windows 2016如何在 Windows 2016 上使用 Powershell IISAdministration 模块为 IIS 网站设置需要 SSL
【发布时间】:2018-06-03 04:57:33
【问题描述】:

在 Windows 2016 上,尝试为 Powershell 使用新的 IISAdministration 模块(不是 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>

【问题讨论】:

    标签: powershell iis windows-server-2016


    【解决方案1】:

    为后代回答我自己的问题。

    IISAdministration 的New-IISSiteBinding cmdlet 真的让我很困惑。

    1. 首先,这不是我的默认 Windows 2016(从 aws 映像加载)的一部分,因此我必须先更新到 IISAdministration 1.1,先执行Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force,然后执行Install-Module -Name IISAdministration -Force。您不能使用 Update-Module,因为 IISAdministration 1.0 没有随 NuGet 一起安装,它是 Win 2016 的一部分。

    2. 其次,SslFlag 属性与 SslFlagsRequire Ssl 无关。 SslFlag on New-IISSiteBinding 可以设置为None, Sni, CentralCertStore。在IIS Manager中,相当于点击一个网站,然后右边的Bindings链接,然后Add/Edit,勾选“Require Server Name Indication”。

    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 的可能值为:None、Ssl、SslNegotiateCert、SslRequireCert、SslMapCert、Ssl128(参见Access Security access

    【讨论】:

      【解决方案2】:

      对于需要客户端证书的用户,适当的设置是“Ssl、SslNegotiateCert、SslRequireCert”

          <system.webServer>
              <security>
                  <access sslFlags="Ssl, SslNegotiateCert, SslRequireCert" />
              </security>
          </system.webServer>
      

      【讨论】:

      • 请务必注意,GUI 中的“必需”是指所有 3 个。如果只设置为“Ssl,SslRequiredCert”,它会工作一段时间,然后最终停止工作(可能是 5 分钟,可能在下次重新启动后)。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-21
      • 2017-02-12
      相关资源
      最近更新 更多