HTTPSとは何か
HTTPS(Hypertext Transfer Protocol Secure)は、HTTPの通信をTLSで保護する仕組みです。ブラウザとサーバーの間で送受信する内容を暗号化し、途中での盗み見や改ざんを防ぎ、接続先の確認を助けます。
URLが https:// で始まり、ブラウザが証明書を正常に検証できるときに、その保護された接続が使われます。
一文でいうと
HTTPSとは、HTTPの要求と応答を、TLSによる暗号化と接続先確認で保護する方法です。
MDNはHTTPSを、TLSによってクライアントとサーバー間の通信全体を暗号化するHTTPと説明しています。RFC 9110では、HTTPSの資源へ送る要求は通信前に保護され、安全な応答だけを受け入れる必要があると定めています。
個人開発のどこで登場するか
公開したWebサイト、API、ログイン画面、フォーム送信などで登場します。パスワードや決済情報を扱わない紹介サイトでも、利用者が受け取るページが途中で書き換えられていないことや、正しい接続先と通信していることが重要です。
多くのブラウザ機能は、安全な接続であることを利用条件にしています。公開後に一部の画像やAPIだけをHTTPで読み込むと、混在コンテンツとして遮断されることがあります。
証明書を確認して接続する
HTTPS接続の流れを簡略化すると、次のようになります。
ブラウザが対象ドメインのサーバーへ接続する
サーバーが証明書を提示する
ブラウザが証明書の発行元、有効期間、対象名などを検証する
通信に使う暗号鍵を安全に合意する
以後のHTTPメッセージを暗号化して交換する
証明書はドメインとは何かで説明した名前に対して有効である必要があります。DNSが正しくても、証明書の対象名が違えば安全な接続として成立しません。
HTTPや暗号化保存と区別する
HTTP:要求と応答を交換する規則
HTTPS:HTTPの通信経路をTLSで保護したもの
証明書:接続先の公開鍵とドメイン名などを結び付け、検証に使う情報
保存時の暗号化:データベースやストレージに置かれたデータを保護する別の対策
HTTPSは通信中のデータを守りますが、サーバーへ到着した後の保存方法やアクセス権限までは決めません。
鍵マークだけでサイト全体を信用しない
HTTPSが正常でも、アプリの不具合、弱い認証、悪意ある運営者、端末上のマルウェア、利用者が自分で入力した公開情報までは防げません。証明書は主に、表示中のドメインとの通信が保護されていることを示します。
公開時は次を確認します。
正式URLがHTTPSで開く
HTTPから正式なHTTPS URLへ転送される
証明書の対象名と有効期間が正しい
ページ内の画像、スクリプト、APIもHTTPSを使う
ログイン後を含む全ページがHTTPSだけで提供される
証明書更新に失敗したときの検知方法がある
ブラウザの警告を回避して公開を続けず、証明書、DNS、サーバーのどこで不整合があるかを調べます。
次に読む記事
HTTPSの土台となる要求・応答はHTTPとは何か、接続先の名前はドメインとは何かで説明します。実際の切り替え確認は独自ドメインとDNSを安全に切り替えるへ進みます。