📖

ELBはHSTSをサポートしていないための解決方法

2024/11/21に公開

HTTPのStrict-Transport-Security (HSTS) は、ウェブサイトがブラウザに対して、HTTPではなくHTTPSを使用するよう指示する仕組みです。[1]
これにより、ウェブサイトへのすべてのアクセスが自動的にHTTPS通信で行われます。

ELBはHSTSをサポートしていません。[2] そのため、HSTSを実装するには以下の方法があります。

①WebサーバーでのHSTSヘッダーの付与:
ELBからWebサーバーにトラフィックを送る場合、Webサーバー側でHSTSヘッダーを付与することが可能です。

②CloudFrontでのHSTSヘッダーの付与:
CloudFrontをELBの前に配置する場合、CloudFront側でHSTSヘッダーを付与することが可能です。

ただし、簡単な対応策としては、HTTP通信を閉じることで、HSTSの対応を不要とすることもできます。
方法としてはELBのリスナー設定を編集し、80→443ポートへのリダイレクトを削除し、443ポートのアクセスのみを受け付けるようにすることです。
この設定により、HTTPでのアクセスはタイムアウトエラーとなります。

参考資料

https://speakerdeck.com/futabato/rfc-6797-http-strict-transport-security

脚注
  1. https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/Strict-Transport-Security ↩︎

  2. https://repost.aws/questions/QUObtOMsY1RmWblPg9LTaKSw/how-to-add-hsts-header-when-redirecting-traffic-in-load-balancer ↩︎

Discussion