【Notice】 We are pleased to announce that our "Good Faith Squatting Strategy (Phishing Takeover)" has been featured in 24 media outlets, including NIKKEI COMPASS, CNET Japan, ZDNET JAPAN, Sankei Shimbun, Toyo Keizai Online, and NewsPicks. Learn More

Website Vulnerabilities: How to Set Up HTTPS Redirects and Why It’s Crucial

Website Vulnerabilities: How to Set Up HTTPS Redirects and Why It’s Crucial

May 31, 2023

HTTPS is a critical security measure for modern websites. Without proper HTTPS redirects, users can still access your site via HTTP, exposing sensitive data to potential risks. This article explains the risks of missing HTTPS redirects, the differences between HSTS and HTTPS redirects, how to verify proper configuration, and step-by-step instructions to enable HTTPS redirects. Enhance your website security and prevent data breaches today.

日本の上場企業3715社の公式サイトのHTTPS対応率 出典: 日本の上場企業3715社の公式サイトのSSL/TLSセキュリティ脆弱性ダッシュボード

HTTPSリダイレクトを設定しないと何が問題か

HTTPSリダイレクトが有効になっていない場合、サイトにHTTPでアクセスした場合に強制的にHTTPS接続にリダイレクトがされないということです。これを悪用して、HTTPS対応しているサイトにおいて、HTTP接続を行う事が可能になり、情報漏洩を引き起こすといった攻撃が可能になってしまいます。一言で言えば、HTTPSを形骸化されてしまう、ということです。そのため、HTTPでの接続はHTTPSにリダイレクトする必要があり、HTTPSリダイレクト設定をする必要が出てくるわけです。目的は、平文での送信による情報漏洩を防ぐことにあります。

他のケースでは、ホームページにURLを貼る際に、ユーザーが間違えてhttpsではなくhttpで記載してしまった場合に、そのURL経由でアクセスした他のユーザーは全てhttp通信でアクセスすることになり、平文での通信が意図せず行われる、というシナリオもありえます。公衆Wi-Fiでアクセスされた場合、危険度は格段に上がります(WIFI通信が暗号化されていないためです。中間者攻撃のリスクが高くなります)。こうしたケースも、HTTPSリダイレクトを設定する事で防げます。ユーザーが、URLからsを一文字取るだけでこれだけの危険が起きるのです。こうしたケースで情報漏洩がおきた場合、企業側の責任になりますから、非常にリスクのある問題といえます。

HSTSとの違い

HTTPSリダイレクトは、HTTPでのアクセス即ちポート80へのアクセスを、HTTPS即ちポート443へリダイレクトすることで、HTTPでの訪問もすべてHTTPSに変換する事で、常にHTTPS通信を行い平文でデータが送信されることを防ぐことが目的です。

HSTSもHTTPS通信を常時使用させ、HTTPでの通信が行われる事を防ぐことが目的なのは同じですが、違うのは、HTTP通信を選択肢から除外し、HTTPSだけを許可する設定である事です。言い換えると、HTTPSリダイレクトはHTTPからHTTPSへのリダイレクトを実現し、通信の機密性を確保します。一方、HSTSはウェブサイトへのアクセスをHTTPSに制限し、セキュリティを強化します。HSTSのHTTPSに制限する能力は、Always、Preloadなどのディレクティブを追加するごとに範囲が強化され、Preloadリストに登録した段階で、100%HTTPSのみでしか通信を行えなくなります、即ちHTTPでの通信は一切行えなくなります。

基本的にはHTTPSリダイレクトを設定した上で、さらにこれを強化する目的で、HSTSを設定することで、HTTPS通信のセキュリティ強度を最大化させることができるようになります。

また、HSTSはウェブサイトのセキュリティを強化し、中間者攻撃やSSLストリッピングなどの攻撃から保護するために使用されます。

HTTPSリダイレクトが有効になっているかを確認する方法

HTTPSリダイレクトが自分のサイトで有効になっているかを確認するためには、いくつかの方法があります。

1つ目の方法は、URLのhttpsをhttpに変更してアクセスしたとき、httpsに変わったりせず、そのままhttpのまま変わらずにいるかどうか、という判別方法です。もしhttpのまま変わらない場合、HTTPSリダイレクトが有効になっていません。変わらないということは、httpで通信の応答が完了しているからです。

逆に、httpでアクセスしてもhttpsに勝手に変更されてしまう場合、HTTPSリダイレクトが有効になっています。通信は常に暗号化されています。

2つ目の方法は、Mozilla Observatoryのような脆弱性スキャンツールでサイトをスキャンした際、HTTPSリダイレクトの項目に警告マークが出ているかチェックする方法です。

これらの方法で確認した際に、もしHTTPSリダイレクトが有効になっていない場合は、情報漏洩のリスクがあるということなので、HTTPSリダイレクトをすぐに有効にする必要があります。

HTTPSリダイレクトの設定方法

HTTPでのアクセスをHTTPSにリダイレクトするための方法は、ポート80へのアクセスをポート443にリダイレクトするディレクティブを、ポート80のserverディレクティブに追記するだけです。具体的には以下のような設定を行います。Nginxでの設定を想定しています。

/etc/nginx/nginx.confを開き、port80のserverディレクティブにreturn 301https://$host$request_uri;を追加します。

server {
    listen 80;
    server_name example.com; 
 
    return 301 https://$host$request_uri; #これを追加
}

設定を反映させるため、Nginxの再起動をします。

sudo systemctl restart nginx

これでHTTPでのアクセス、即ちポート80へのアクセスは、以降全て、HTTPS即ちポート443にリダイレクトされます。言い換えると、HTTPでのアクセスは全てHTTPSに変換されるため、セキュリティが向上します。同時に、リダイレクトを設定していない場合に発生するような、勝手にHTTPで通信される、という事態を防ぐことができます。ユーザーが誤ってURLをHTTPで記載してしまっても、HTTPSにリダイレクトされるので、平文で通信されて情報漏洩が発生することもなくなります。