共用方式為


網站 < hsts 的預設 HSTS 設定>

概觀

元素 <hsts><siteDefaults> 元素包含屬性,可讓您在 IIS 10.0 1709 版和更新版本上設定月臺的預設 HTTP Strict Transport Security (HSTS) 設定。

注意

如果專案 <hsts> 同時在 <siteDefaults> 區段和 <site> 特定月臺的 區段中設定,則區段中的 <site> 組態會用於該月臺。

相容性

版本 備註
IIS 10.0 版本 1709 元素 <hsts><siteDefaults> 元素是在 IIS 10.0 1709 版中引進。
IIS 10.0 N/A
IIS 8.5 N/A
IIS 8.0 N/A
IIS 7.5 N/A
IIS 7.0 N/A
IIS 6.0 N/A

安裝程式

元素 <hsts><siteDefaults> 元素包含在 IIS 10.0 0 1709 版和更新版本的預設安裝中。

作法

沒有使用者介面可讓您設定 <hsts> IIS 10.0 0 1709 版元素的 <siteDefaults> 元素。 For examples of how to configure the <hsts> element of the <siteDefaults> element programmatically, see the Sample Code section of this document.

組態

屬性

屬性 描述
enabled 選擇性的 Boolean 屬性。

指定是否啟用 HSTS (true) 或停用網站 (false) 。 如果已啟用 HSTS,當 IIS 回復 HTTPS 要求至網站時,就會新增 Strict-Transport-Security HTTP 回應標頭。

預設值是 false
max-age 選擇性 uint 屬性。

指定Strict-Transport-Security HTTP 回應標頭域值中的max-age指示詞。

預設值是 0
includeSubDomains 選擇性的 Boolean 屬性。

指定 includeSubDomains 指示詞是否包含在 Strict-Transport-Security HTTP 回應標頭域值中。

注意: 只有在所有子域確實透過 TLS/SSL 提供 HTTP 型服務時,才啟用此屬性。

預設值是 false
preload 選擇性的 Boolean 屬性。

指定 Preload 指示詞是否包含在 Strict-Transport-Security HTTP 回應標頭域值中。

注意: 只有在已提交網站網域以包含在 HSTS 預先載入清單中時,才啟用此屬性。

預設值是 false
redirectHttpToHttps 選擇性的 Boolean 屬性。

指定是否啟用 HTTP 至 HTTPS 重新導向, (true) 或針對網站停用 (false) 。

注意: 啟用 redirectHttpToHttps 會強制執行網站層級 HTTP 至 HTTPS 重新導向。 當 IIS 重新導向 HTTP 要求時,它會以 「HTTPs」 取代 URI 配置,並忽略埠元件。 請確定重新導向目的地在標準埠 443 上透過 TLS/SSL 提供 HTTP 型服務。

預設值是 false

子元素

無。

組態範例

下列組態範例會指定 IIS 10.0 1709 版和更新版本的預設 <hsts> 選項。

<system.applicationHost>
    <sites>
        <siteDefaults>
            <hsts enabled="true" max-age="31536000" includeSubDomains="true" redirectHttpToHttps="true" />
        </siteDefaults>
    </sites>
</system.applicationHost>

範例程式碼

下列程式碼範例會設定 IIS 10.0 1709 版和更新版本的預設 <hsts> 選項。

AppCmd.exe

appcmd.exe set config  -section:system.applicationHost/sites /siteDefaults.hsts.enabled:"True" /commit:apphost
appcmd.exe set config  -section:system.applicationHost/sites /siteDefaults.hsts.max-age:"31536000" /commit:apphost
appcmd.exe set config  -section:system.applicationHost/sites /siteDefaults.hsts.includeSubDomains:"True" /commit:apphost
appcmd.exe set config  -section:system.applicationHost/sites /siteDefaults.hsts.redirectHttpToHttps:"True" /commit:apphost

注意

當您使用AppCmd.exe設定這些設定時,請務必將 認可 參數 apphost 設定為 。 這會將組態設定認可至applicationHost.config檔案中適當的位置區段。

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample
{
    private static void Main()
    {
        using(ServerManager serverManager = new ServerManager())
        { 
            Configuration config = serverManager.GetApplicationHostConfiguration();
            ConfigurationSection sitesSection = config.GetSection("system.applicationHost/sites");
            ConfigurationElement siteDefaultsElement = sitesSection.GetChildElement("siteDefaults");
            
            ConfigurationElement hstsElement = siteDefaultsElement.GetChildElement("hsts");
            hstsElement["enabled"] = true;
            hstsElement["max-age"] = 31536000;
            hstsElement["includeSubDomains"] = true;
            hstsElement["redirectHttpToHttps"] = true;
            
            serverManager.CommitChanges();
        }
    }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Module Sample

   Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetApplicationHostConfiguration
      Dim sitesSection As ConfigurationSection = config.GetSection("system.applicationHost/sites")
      Dim siteDefaultsElement As ConfigurationElement = sitesSection.GetChildElement("siteDefaults")

      Dim hstsElement As ConfigurationElement = siteDefaultsElement.GetChildElement("hsts")
      hstsElement("enabled") = True
      hstsElement("max-age") = 31536000
      hstsElement("includeSubDomains") = True
      hstsElement("redirectHttpToHttps") = True

      serverManager.CommitChanges()
   End Sub

End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var sitesSection = adminManager.GetAdminSection("system.applicationHost/sites", "MACHINE/WEBROOT/APPHOST");
var siteDefaultsElement = sitesSection.ChildElements.Item("siteDefaults");

var hstsElement = siteDefaultsElement.ChildElements.Item("hsts");
hstsElement.Properties.Item("enabled").Value = true;
hstsElement.Properties.Item("max-age").Value = 31536000;
hstsElement.Properties.Item("includeSubDomains").Value = true;
hstsElement.Properties.Item("redirectHttpToHttps").Value = true;

adminManager.CommitChanges();

VBScript

Set adminManager = WScript.CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set sitesSection = adminManager.GetAdminSection("system.applicationHost/sites", "MACHINE/WEBROOT/APPHOST")
Set siteDefaultsElement = sitesSection.ChildElements.Item("siteDefaults")

Set hstsElement  = siteDefaultsElement.ChildElements.Item("hsts")
hstsElement.Properties.Item("enabled").Value = True
hstsElement.Properties.Item("max-age").Value = 31536000
hstsElement.Properties.Item("includeSubDomains").Value = True
hstsElement.Properties.Item("redirectHttpToHttps").Value = True

adminManager.CommitChanges()

IISAdministration PowerShell Cmdlet

Import-Module IISAdministration
Reset-IISServerManager -Confirm:$false
Start-IISCommitDelay

$sitesCollection = Get-IISConfigSection -SectionPath "system.applicationHost/sites" | Get-IISConfigCollection
$siteDefaultsElement = Get-IISConfigElement -ConfigElement $sitesCollection -ChildElementName "siteDefaults"
$hstsElement = Get-IISConfigElement -ConfigElement $siteDefaultsElement -ChildElementName "hsts"
Set-IISConfigAttributeValue -ConfigElement $hstsElement -AttributeName "enabled" -AttributeValue $true
Set-IISConfigAttributeValue -ConfigElement $hstsElement -AttributeName "max-age" -AttributeValue 31536000
Set-IISConfigAttributeValue -ConfigElement $hstsElement -AttributeName "includeSubDomains" -AttributeValue $true
Set-IISConfigAttributeValue -ConfigElement $hstsElement -AttributeName "redirectHttpToHttps" -AttributeValue $true

Stop-IISCommitDelay
Remove-Module IISAdministration