概觀
元素 <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