Windows 2022
Sponsored Link

IIS : HSTS を有効にする2022/01/26

 
HSTS (Hypertext Strict Transport Security) を有効にすると、Web ブラウザーに SSL/TLS の使用を強制することができます。
下例で設定している [includeSubDomains] により、対象ドメイン全てが HTTPS 接続の対象となるため、設定対象のサイトやドメインについて、全ページが HTTPS アクセス可能か、事前によく確認しておく必要があります。
[1]
[2] PowerShell を管理者権限で起動して設定します。
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

PS C:\Users\Administrator> Get-Website 

Name             ID   State      Physical Path                  Bindings
----             --   -----      -------------                  --------
Default Web Site 1    Started    %SystemDrive%\inetpub\wwwroot  http *:80:
RX-7.srv.world   2    Started    C:\inetpub\newsite             http *:80:rx-7.srv.world


# 設定したいサイト名を格納
PS C:\Users\Administrator> [String]$MySite = "RX-7.srv.world" 

# 対象サイトの HSTS の設定を有効化
PS C:\Users\Administrator> Set-IISConfigAttributeValue -ConfigElement (Get-IISConfigElement -ConfigElement (Get-IISConfigCollectionElement -ConfigCollection (Get-IISConfigSection -SectionPath "system.applicationHost/sites" | Get-IISConfigCollection) -ConfigAttribute @{"name"=$MySite}) -ChildElementName "hsts") -AttributeName "enabled" -AttributeValue $true 

# 対象サイトの HSTS の [max-age] 設定を 31536000 秒 (365日) に設定
PS C:\Users\Administrator> Set-IISConfigAttributeValue -ConfigElement (Get-IISConfigElement -ConfigElement (Get-IISConfigCollectionElement -ConfigCollection (Get-IISConfigSection -SectionPath "system.applicationHost/sites" | Get-IISConfigCollection) -ConfigAttribute @{"name"=$MySite}) -ChildElementName "hsts") -AttributeName "max-age" -AttributeValue 31536000 

# 対象サイトの HSTS の [includeSubDomains] 設定を有効化
# 有効化するとサブドメインも含めて対象ドメイン全てで HSTS が有効となる
PS C:\Users\Administrator> Set-IISConfigAttributeValue -ConfigElement (Get-IISConfigElement -ConfigElement (Get-IISConfigCollectionElement -ConfigCollection (Get-IISConfigSection -SectionPath "system.applicationHost/sites" | Get-IISConfigCollection) -ConfigAttribute @{"name"=$MySite}) -ChildElementName "hsts") -AttributeName "includeSubDomains" -AttributeValue $true 

# 対象サイトの HSTS の [redirectHttpToHttps] 設定を有効化
PS C:\Users\Administrator> Set-IISConfigAttributeValue -ConfigElement (Get-IISConfigElement -ConfigElement (Get-IISConfigCollectionElement -ConfigCollection (Get-IISConfigSection -SectionPath "system.applicationHost/sites" | Get-IISConfigCollection) -ConfigAttribute @{"name"=$MySite}) -ChildElementName "hsts") -AttributeName "redirectHttpToHttps" -AttributeValue $true 

# 対象サイトの HSTS の [preload] 設定を有効化
PS C:\Users\Administrator> Set-IISConfigAttributeValue -ConfigElement (Get-IISConfigElement -ConfigElement (Get-IISConfigCollectionElement -ConfigCollection (Get-IISConfigSection -SectionPath "system.applicationHost/sites" | Get-IISConfigCollection) -ConfigAttribute @{"name"=$MySite}) -ChildElementName "hsts") -AttributeName "preload" -AttributeValue $true 

# 設定確認
PS C:\Users\Administrator> Get-IISConfigElement -ConfigElement (Get-IISConfigCollectionElement -ConfigCollection (Get-IISConfigSection -SectionPath "system.applicationHost/sites" | Get-IISConfigCollection) -ConfigAttribute @{"name"=$MySite}) -ChildElementName "hsts" 

Attributes      : {enabled, max-age, includeSubDomains, preload...}
ChildElements   : {}
ElementTagName  : hsts
IsLocallyStored : True
Methods         :
RawAttributes   : {[enabled, True], [max-age, 31536000], [includeSubDomains, True], [preload, True]...}
Schema          : Microsoft.Web.Administration.ConfigurationElementSchema
IIS : HSTS を有効にする (GUI)
 
GUI で設定する場合は以下のように実行します。
[3] [スタート] - [サーバーマネージャー] から [ツール] - [インターネット インフォメーション サービス マネージャー] を起動し、左ペインの [サイト] から、HSTS を設定したいサイトを選択して、右ペインの [HSTS...] をクリックします。
[4]
[有効化] にチェックを入れて有効にします。
その他の項目は下記の通りです。
[最大有効期間]
  Web ブラウザーが HSTS ポリシーをキャッシュして適用する時間 (秒)
[includeSubDomains]
  対象ドメインの全サブドメインに HSTS ポリシーを適用
[プリロード]
  有効にすると HSTS Preload リスト (https://hstspreload.org/) に含まれる
[Http を Https にリダイレクト]
  Http を Https にリダイレクトする
関連コンテンツ