HTTPSとHTTPの違い

今日のサイト運用に於いて、SSL/TLS(以下、SSLと記述)による通信の暗号化はもはや必須となっています。
分かりやすく言うと「https://でアクセスできること」です。
暗号化されていないと警告を出すブラウザも多く、その場合は特定の操作をしないとサイトにアクセスすることができません。

一般的なレンタルサーバーであればコントロールパネルなどから簡単に設定出来る場合が多いです。
VPSやクラウドの場合だと自分で設定する必要がありますが、そもそもVPSなどを使ってサイトを構築しようとする方々は基本的なスキルはお持ちでしょうから特別難しいことはないと思います。

この記事では「HTTPSとHTTPの違い」について簡単に説明したいと思います。
難しいところはざっくり省いて分かりやすくしたつもりです。
もっと深く知りたい方は専門書籍などをご覧ください。

目次

結論

先に結論を述べてしまいます。
違いは「ユーザーとサーバー間での通信内容が暗号化されているか、されていないか」という点です。
よく勘違いされるのですが「通信内容が傍受できるか、できないか」ではないです。
通信していることはHTTPSであってもHTTPであっても、外から丸見えです。

暗号化の仕組み

クライアント(ブラウザなど)とサーバーの間で暗号化して通信をするためには決められた手順があります。
それについて簡単に説明します。
尚、(暗)と記したものについては暗号化されているので万が一第三者の手に渡っても元の形に戻す(復号化)ことはできません。

  1. クライアントがサーバーに対して「HTTPSで通信したい」とリクエストを出す。
  2. サーバーがクライアントに対して「サーバー証明書」と「公開鍵」を送る。
    「公開鍵」はサーバーが持っている「秘密鍵」から作られる。
  3. クライアントが「サーバー証明書」の真偽を判断し、問題なければ「共通鍵」を作り、それを「公開鍵」で暗号化してサーバーに「共通鍵」(暗)を送る。
  4. サーバーがクライアントから送られてきた「共通鍵」(暗)を「秘密鍵」を使って復号化して「共通鍵」とする。
    クライアントが持っている「共通鍵」とサーバーが持っている「共通鍵」は文字通り共通となる。

これで暗号化通信の準備は完了です。

この後は送る側は「共通鍵」でデータを暗号化して送信し、受け取った側は「共通鍵」でデータを復号化して処理するという流れになります。
互いの間をいったりきたりしているデータは常に暗号化されているので万が一傍受されても「共通鍵」がなければ復号化することはできません。
またその「共通鍵」についてもクライアントから送られるときには暗号化されて「共通鍵」(暗)になっており、その復号化には「秘密鍵」が必要になります。
上記の手順を見ていただくと分かるとおり「秘密鍵」はサーバー内にありますのでこれが盗まれない限りは安全になります。

秘密鍵は極めて重要

サーバー証明書の発行申請をする際に必要となるデータ(CSRと呼ばれる)には「秘密鍵」で作られた「公開鍵」が含まれています。
そしてサーバー証明書にその公開鍵を使った署名がされています。
サーバー側でそのサーバー証明書を読み込む際、「秘密鍵」でサーバー証明書に付いている署名を検証し、間違っていればサーバーは立ち上がりません。


まとめ

HTTPSによる暗号化通信の仕組み、お分かりいただけたでしょうか。
考えた人は本当にすごいと思います。
このおかげで安全に機密情報をやり取りすることができるわけですね。

この記事が気に入ったら
フォローしてね!

  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次