適用対象:2016
2019
Subscription Edition
概要
HTTP Strict Transport Security (HSTS) は、ブラウザーが常に HTTPS 接続を使用して接続できるようにすることで、Web サイトの訪問者を保護するのに役立つ 広くサポートされている標準 です。 HSTS は、サーバーから Strict-Transport-Security
(STS) と呼ばれるブラウザーに特別な HTTP 応答ヘッダーを送信することで機能します。 このヘッダーには、サイトに HTTPS のみを使用してアクセスできることをブラウザーで覚えておく必要がある時間の長さ (秒単位) を指定する max-age
ディレクティブが含まれています。 ブラウザーがこのヘッダーを受け取ると、サイトにアクセスするすべての HTTP 要求が HTTPS 要求に自動的に変更されます。
HSTS は、一般的な攻撃シナリオに対する保護を追加するだけでなく、ユーザーを HTTP URL から HTTPS URL にリダイレクトする一般的な (現在は安全でない) プラクティスの必要性を取り除くのにも役立ちます。 HSTS は、アクティブおよびパッシブ ネットワーク攻撃に対処するためにも使用できます。 ただし、HSTS はマルウェア、フィッシング、またはブラウザーの脆弱性に対処しません。
HSTS のしくみ
ブラウザーは、HTTPS 接続経由で Strict-Transport-Security
ヘッダーを受信したときに HSTS を適用するように指示されます。ただし、ブラウザーが HSTS を適用する前に満たす必要があるいくつかの要件があります。 具体的には、セッションの暗号化に使用される証明書は次のとおりです。
- クライアントによって有効で信頼されている必要があります。
- 有効期限が切れてはいけません。そして
- ブラウザーで呼び出されたドメインまたはサブドメインを含む必要があります。
一般的な推奨事項については、「 Microsoft Edge で Web を安全に参照 する」を参照してください。
ドメインが HSTS を有効にしたことをブラウザーが認識すると、次のようになります。
-
http://
リンクをクリックするときや、プロトコルを指定せずにアドレス バーに URL を入力した後など、常にhttps://
接続を使用します。 - ユーザーが警告をクリックする機能 (期限切れ、無効な証明書、名前の不一致など) を削除します。
一部のシナリオ (たとえば、ユーザーが新しいコンピューター、新しいプロファイル、新しいブラウザーを持っている、またはブラウザーのデータと設定をクリアした) 場合、ユーザーは HSTS が適用されずに初めてサイトにアクセスするため、短期間脆弱になります。 これらのシナリオに対処するために、Chromium プロジェクトはHSTS Preload List
を維持します (Microsoft Edge や Mozilla Firefox などの他のブラウザーでも使用されます)。
Preload List
では、サイトに初めてアクセスする場合でも HSTS が適用されます。
HSTS リストにドメインを送信できます。 また、Web サーバー (または Exchange サーバー) は、Strict-Transport-Security
ヘッダーの一部として preload
ディレクティブを送信して、HSTS プリロードをブラウザーで実行する必要があることを通知する必要があります。
HTTP 接続Exchange Server処理する方法
既定では、既定の Web サイトでは SSL が必要なため、Exchange Serverは HTTP を HTTPS トラフィックにリダイレクトしません。 詳細については、「 Exchange 仮想ディレクトリの既定の設定 」を参照してください。
ただし、HTTP から HTTPS への自動リダイレクトを構成するには、「Exchange ServerのOutlook on the webの http から https へのリダイレクトを構成する」で説明されている手順に従って、HTTP 経由で確立された接続を受け入れ、HTTP 302 redirect
で応答Exchange Serverできます。
HSTS は、HTTPS への書き換えがブラウザー自体によって実行され、 HTTP 302 redirect
応答の一部としてサーバーによって実行されなくなったので、安全でない HTTP から HTTPS へのリダイレクトの数を大幅に減らすのに役立ちます。 HSTS を使用するとパフォーマンスが向上する可能性もありますが、これは主な目的ではありません。
既定の構成 (暗号化されていない接続を許可しない) に関係なく、応答ヘッダーの一部として Strict-Transport-Security
ヘッダーを提供することをお勧めします。
Exchange Serverで HSTS を有効にする
STS ヘッダーは、Exchange Server 2019 および Exchange Server 2016 で構成できますが、各バージョンの構成方法は異なります。
重要
HSTS は、クライアントが接続するエンドポイントであるため、 Default Web Site
でのみ構成する必要があります。 HSTS は、 Exchange Back End
で構成しないでください。 また、レイヤー 7 (ロード バランサーやリバース プロキシなど) を介して Exchange サーバーの前で動作しているデバイスで、応答ヘッダーを使用して HSTS を構成することも検討する必要があります。
5 分の 300 (秒) の max-age
構成から開始することをお勧めします。 変更が行われた後は、Exchange サーバーへのクライアント接続を注意深く監視し、問題が発生した場合は変更をロールバックする必要があります。
1 週間 (604800
) または 1 か月 (2592000
) のmax-age
値に更新し、ステージの完全なmax-age
を待ってから次に進みます。
HSTS Preload List
にドメインを追加する予定の場合は、セキュリティの観点から 1 年 (31536000
) のmax-age
値を最小値として設定する必要があります。また、少なくとも必要です。
max-age
値を 2 年 (63072000
) の値に設定することをお勧めします。
注:
次の例では、 max-age
値を 300 秒に設定します。これは、機能の検証にのみ使用する必要がある構成です。 構成を運用環境に移行する準備ができたら、属性値を高い値に調整してください。
Exchange Server 2019
Strict-Transport-Security
ヘッダーを送信するように Exchange Server 2019 を構成するには、Windows PowerShellまたは IIS マネージャー ユーザー インターフェイス (UI) を使用します。 次のセクションでは、両方のメソッドについて説明します。 HSTS 構成はサーバーごとの構成であるため、すべての Exchange サーバーで実行する必要があります。
PowerShell を使用した HSTS 構成
管理者特権の PowerShell ウィンドウから次のコマンドを実行して、HSTS を構成して有効にします。
注:
Exchange Server 2019 のより大きいmax-age
値を構成するには、より大きい値を使用してコマンドを再実行します。 既存の構成を事前に削除する必要はありません。
Import-Module IISAdministration
Reset-IISServerManager -Confirm:$false
Start-IISCommitDelay
$sitesCollection = Get-IISConfigSection -SectionPath "system.applicationHost/sites" | Get-IISConfigCollection
$siteElement = Get-IISConfigCollectionElement -ConfigCollection $sitesCollection -ConfigAttribute @{"name"="Default Web Site"}
$hstsElement = Get-IISConfigElement -ConfigElement $siteElement -ChildElementName "hsts"
Set-IISConfigAttributeValue -ConfigElement $hstsElement -AttributeName "enabled" -AttributeValue $true
Set-IISConfigAttributeValue -ConfigElement $hstsElement -AttributeName "max-age" -AttributeValue 300
Set-IISConfigAttributeValue -ConfigElement $hstsElement -AttributeName "includeSubDomains" -AttributeValue $true
ドメインをHSTS Preload List
に追加する場合は、Strict-Transport-Security
ヘッダーの一部として preload
ディレクティブも送信されるようにする必要があります。 ドメインをHSTS Preload List
に送信する予定がない場合は、preload
ディレクティブを送信しないでください。
Set-IISConfigAttributeValue -ConfigElement $hstsElement -AttributeName "preload" -AttributeValue $true
最後に、HSTS 構成を完了するには、次のコマンドを実行する必要があります。
Stop-IISCommitDelay
Remove-Module IISAdministration
IIS マネージャーを使用した HSTS 構成
HSTS を構成して有効にするには、インターネット インフォメーション サービス マネージャーで次の手順を実行します。
IIS マネージャーを起動する (
InetMgr.exe
)Sites
に移動し、Default Web Site
[
Actions
] メニューで、HSTS...
[
Enable
] チェックボックスをオンにし、max-age
値を定義し、この記事の説明に従ってディレクティブを選択します重要
これは Exchange Management Shell (EMS) を含む一部のシナリオで接続が切断されるため、HSTS 構成を使用して HTTP を HTTPS にリダイレクトすることはできません。 HTTP から HTTPS へのリダイレクトを有効にする場合は、Exchange Serverの「http から https へのリダイレクトのOutlook on the webを構成する」で説明されている手順に従う必要があります。
[
OK
] をクリックして構成を完了し、アクティブ化します
Exchange Server 2016
注:
HSTS の構成は、Exchange Server 2019 でサポートされているオペレーティング システムの UI を介して可能ですが、このコントロールは、Exchange Server 2016 でサポートされているオペレーティング システムではネイティブに使用できません。 そのため、PowerShell を使用して実行する手順のみを説明します。
Strict-Transport-Security
ヘッダーを送信するように 2016 Exchange Server構成するには、管理者特権の PowerShell ウィンドウから次のコマンドを実行します。 HSTS 構成はサーバーごとの構成であるため、すべての Exchange サーバーで行う必要があります。
注:
Exchange Server 2016 のより高いmax-age
値を構成するには、次のコマンドをもう一度実行する前に、まず HTTP 応答ヘッダーを削除する必要があります。
Windows Server 2012 & 2012 R2
ドメインを HSTS Preload List
に追加する予定がない場合は、 preload
ディレクティブが Strict-Transport-Security
ヘッダーの一部として送信されていないことを確認する必要があります。 次のコマンドを実行して、preload
ディレクティブを送信せずに HSTS を構成します。
Import-Module WebAdministration
Add-WebConfigurationProperty -Filter "system.webServer/httpProtocol/customHeaders" -PSPath "IIS:\Sites\Default Web Site" -Name . -AtElement @{name="Strict-Transport-Security"} -Value @{name="Strict-Transport-Security";value="max-age=300; includeSubDomains"}
or
ドメインをHSTS Preload List
に追加する場合は、Strict-Transport-Security
ヘッダーの一部として preload
ディレクティブが送信されていることを確認する必要があります。 次のコマンドを実行して、HSTS 構成の一部として preload
ディレクティブを送信するようにExchange Serverを構成します。
Import-Module WebAdministration
Add-WebConfigurationProperty -Filter "system.webServer/httpProtocol/customHeaders" -PSPath "IIS:\Sites\Default Web Site" -Name . -AtElement @{name="Strict-Transport-Security"} -Value @{name="Strict-Transport-Security";value="max-age=300; includeSubDomains; preload"}
Windows Server 2016
Import-Module IISAdministration
Reset-IISServerManager -Confirm:$false
Start-IISCommitDelay
$iisConfig = Get-IISConfigSection -SectionPath "system.webServer/httpProtocol" -CommitPath "Default Web Site" | Get-IISConfigCollection -CollectionName "customHeaders"
ドメインを HSTS Preload List
に追加する予定がない場合は、 preload
ディレクティブが Strict-Transport-Security
ヘッダーの一部として送信されていないことを確認する必要があります。 次のコマンドを実行して、preload
ディレクティブを送信せずに HSTS を構成します。
New-IISConfigCollectionElement -ConfigCollection $iisConfig -ConfigAttribute @{"name"="Strict-Transport-Security"; "value"="max-age=300; includeSubDomains";}
or
ドメインをHSTS Preload List
に追加する場合は、Strict-Transport-Security
ヘッダーの一部として preload
ディレクティブが送信されていることを確認する必要があります。 次のコマンドを実行して、HSTS 構成の一部として preload
ディレクティブを送信するようにExchange Serverを構成します。
New-IISConfigCollectionElement -ConfigCollection $iisConfig -ConfigAttribute @{"name"="Strict-Transport-Security"; "value"="max-age=300; includeSubDomains; preload";}
最後に、HSTS 構成を完了するには、次のコマンドを実行する必要があります。
Stop-IISCommitDelay
Remove-Module IISAdministration
Exchange Serverで HSTS を無効にする
Exchange ServerStrict-Transport-Security
ヘッダーの送信を停止する場合は、サーバーごとのベースで構成をロールバックできます。 HSTS を無効にする手順は、Exchange Server 2016 年と 2019 年Exchange Serverで異なります。
注:
HSTS 仕様を使用すると、値が 0
の max-age
ディレクティブを送信できます。 この構成を使用して、キャッシュされた HSTS ポリシー情報をブラウザーで上書きできます。 Exchange Server HSTS 構成を削除する予定の場合は、Strict-Transport-Security
ヘッダー構成を削除する前に、最初に 0
のmax-age
値を設定すると便利な場合があります。
Exchange Server 2019
2019 Exchange ServerStrict-Transport-Security
ヘッダーの送信を停止するには、Windows PowerShellまたは IIS マネージャー ユーザー インターフェイス (UI) を使用します。 次のセクションでは、両方のメソッドについて説明します。
PowerShell を使用した HSTS 構成
昇格した PowerShell ウィンドウから次のコマンドを実行して、HSTS を無効にします。
Import-Module IISAdministration
Reset-IISServerManager -Confirm:$false
Start-IISCommitDelay
$sitesCollection = Get-IISConfigSection -SectionPath "system.applicationHost/sites" | Get-IISConfigCollection
$siteElement = Get-IISConfigCollectionElement -ConfigCollection $sitesCollection -ConfigAttribute @{"name"="Default Web Site"}
$hstsElement = Get-IISConfigElement -ConfigElement $siteElement -ChildElementName "hsts"
Set-IISConfigAttributeValue -ConfigElement $hstsElement -AttributeName "enabled" -AttributeValue $false
Set-IISConfigAttributeValue -ConfigElement $hstsElement -AttributeName "max-age" -AttributeValue 0
Set-IISConfigAttributeValue -ConfigElement $hstsElement -AttributeName "includeSubDomains" -AttributeValue $false
以前の HSTS 構成で preload
ディレクティブを送信する場合は、次も無効にしてください。
重要
HSTS の事前読み込みリストからの削除も要求してください。 事前読み込みリストからドメインを削除することを忘れた場合、ブラウザーは引き続き HSTS の適用を試みます。
Set-IISConfigAttributeValue -ConfigElement $hstsElement -AttributeName "preload" -AttributeValue $false
最後に、HSTS 構成を完了するには、次のコマンドを実行する必要があります。
Stop-IISCommitDelay
Remove-Module IISAdministration
IIS マネージャーを使用した HSTS 構成
HSTS を無効にするには、インターネット インフォメーション サービス マネージャーで次の手順を実行します。
IIS マネージャーを起動する (
InetMgr.exe
)Sites
に移動し、Default Web Site
[
Actions
] メニューで、HSTS...
すべてのディレクティブをオフにし、
max-age
ディレクティブを0
に設定し、最後に [Enable
] チェック ボックスをオフにします[
OK
] をクリックして構成を完了します
Exchange Server 2016
注:
HSTS の構成は、Exchange Server 2019 でサポートされているオペレーティング システムの UI を介して可能ですが、このコントロールは、Exchange Server 2016 でサポートされているオペレーティング システムではネイティブに使用できません。 そのため、PowerShell を使用して実行する手順のみを説明します。
Exchange Server 2016 で Strict-Transport-Security
ヘッダーの送信を停止するには、各 Exchange サーバーの管理者特権の PowerShell ウィンドウから次のコマンドを実行します。
Windows Server 2012 & 2012 R2
Import-Module WebAdministration
Remove-WebConfigurationProperty -PSPath "IIS:\Sites\Default Web Site" -Filter "system.webServer/httpProtocol/customHeaders" -Name . -AtElement @{name="Strict-Transport-Security"}
Windows Server 2016
Import-Module IISAdministration
Reset-IISServerManager -Confirm:$false
Start-IISCommitDelay
$iisConfig = Get-IISConfigSection -SectionPath "system.webServer/httpProtocol" -CommitPath "Default Web Site" | Get-IISConfigCollection -CollectionName "customHeaders"
前の HSTS 構成で preload
ディレクティブが送信されなかった場合は、次のコマンドを実行します。
Remove-IISConfigCollectionElement -ConfigCollection $iisConfig -ConfigAttribute @{"name"="Strict-Transport-Security"; "value"="max-age=300; includeSubDomains";}
or
以前の HSTS 構成で preload
ディレクティブを送信する場合は、必ず次のコマンドを実行してください。
Remove-IISConfigCollectionElement -ConfigCollection $iisConfig -ConfigAttribute @{"name"="Strict-Transport-Security"; "value"="max-age=300; includeSubDomains; preload";}
最後に、HSTS 構成を完了するには、次のコマンドを実行する必要があります。
Stop-IISCommitDelay
Remove-Module IISAdministration
HSTS が期待どおりに動作していることを検証する
HSTS 保護が期待どおりに機能していることを確認する最善の方法は、HSTS (Microsoft Edge、Firefox、Chrome、Safari、Opera など) をサポートする最新のブラウザーを使用することです。 Microsoft Edge ブラウザーを使用する場合は、次の手順に従うことができます。 別のブラウザーを使用している場合は、ドキュメントを参照して、HSTS フラグを確認する手順を確認します。
- ブラウザーを開き、OWA または ECP への HTTPS 接続を確立します。 Exchange サーバーから返される証明書が、使用した (サブ) ドメイン (e2k16-2.contoso.lab など) と一致し、クライアント コンピューターによって信頼されていることを確認します (ドメインのブラウザーの HSTS 保護をアクティブ化するためにこれが必要であるため)。
- アドレス バーに「
edge://net-internals/#hsts
」と入力し、Enter キーを押します。 - OWA または ECP (e2k16-2.contoso.lab など) へのアクセスに使用したドメイン名を [
Query HSTS/PKP domain
] ボックスに入力し、Enter キーを押します。
例:
結果が Not found
された場合、これは HSTS がドメインに使用されていないことを意味します。 その理由は、URL が以前にアクセスされなかったか、HSTS ポリシー ストアを含むエントリの有効期限が切れている ( max-age
ディレクティブで指定された時刻に有効である) ことが考えられます。
結果が見つかった場合、出力は次のようになります。
HSTS が使用され、接続が信頼されていない場合 (たとえば、URL が証明書が発行されたドメインと一致しない、または証明書が信頼されていないか期限切れになっている場合)、ユーザーはバイパス できない次の警告を表示します。