HSTSはHTTP Strict Transport Securityの略で、HTTPでの接続を強制的にHTTPSへと変更するようウェブブラウザへ伝達するセキュリティ機構です。

最近ではウェブサービスはHTTPS化して当然という流れになってきています。 このブログは現在Rancher上で管理されています。フロントエンドのHTTP/HTTPSロードバランサとしてRancher-HAProxyを使用しており、HSTSを設定するのに難儀したのでメモを残しておきます。

HSTSを設定するには、HTTPレスポンスヘッダに以下を含めます。

Strict-Transport-Security:max-age=有効期間秒数;

max-ageで指定された期間の間、ブラウザは必ずHTTPSで通信するようになります。

扨、これを実際にRancher-HAProxyに設定するには、Rancher-HAProxyの設定ページで、Custom haproxy.cfgの欄に以下のように記述します。

backend 80
http-response set-header Strict-Transport-Security max-age=16000000;

改行も必要なようです。HSTS on HAProxy · Issue #4443 · rancher/rancher · GitHub には改行なしで書かれていたので、ハマりました。