212
229

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

知ってそうで知らないHTTPS

Last updated at Posted at 2024-11-17

はじめに

HTTPとHTTPSの違いを理解できていますか?

ウェブサイトにアクセスする際、多くの方がブラウザのURLバーで「http://」や「https://」といった表示を目にしたことがあると思います。一般的に 「HTTPSはセキュアだから安全」「HTTPは非暗号化だから危険」 と言われますが、その違いや仕組みを正しく理解している方は意外と少ないかもしれません。もし 「ちょっと怪しいかも…」 と感じたら、この記事に目を通してみてください!

特に読んでほしいのは、ネットを日常的に利用している方や、ウェブサイトの開発・運営に関わりたいと考えている方です。サイトを作る側としても、どの場面でHTTPSが必須なのか、HTTPとの使い分けを知っておくと、より安全で信頼できるサイトづくりができるはずです。ぜひ参考にしてみてください!

どんな方でも頭の片隅に入れておいても損はない情報ですので、ぜひ最後まで読んでいってください!
それでは、HTTPやHTTPSの基本から一緒に見ていきましょう!

弊社Nucoでは、他にも様々なお役立ち記事を公開しています。よかったら、Organizationのページも覗いてみてください。
また、Nucoでは一緒に働く仲間も募集しています!興味をお持ちいただける方は、こちらまで。

HTTPとHTTPSの違いを正しく理解していますか?

HTTP : (Hyper Text Transfer Protocol)
HTTPS: (Hyper Text Transfer Protocol Secure)

HTTP(Hyper Text Transfer Protocol)とHTTPS(Hyper Text Transfer Protocol Secure)は、その名の通り、データ通信の安全性に違いがあります。大きな違いとしては、HTTPSでは通信が「暗号化」されるため、第三者が内容を覗き見することが難しくなります。このため、ネットバンキングやクレジットカード決済、個人情報の登録や編集といったセキュリティが重要なシーンで利用されています。もしECサイトがHTTPを使用していた場合、クレジットカード情報や住所が盗まれる可能性があるのに対し、HTTPSでは暗号化により通信内容を保護できます。

なお、HTTPとHTTPSの選択はサイトの構築側の設定によります。仮にユーザー側が「HTTPSで通信したい」と思っても、サイトがHTTPのままだとHTTPSでの通信はできません。このような違いや制限を押さえ、HTTPとHTTPSの使い分けを理解しておきましょう。

余談ですが、お使いのWebブラウザーによってはアドレスバーに鍵のマークの表示などで現在の通信の種類を確認することができます。
ここではGoogle Chromeの「http」と「https」通信の確認方法をご紹介します。

Google Chromeの通信確認

Google Chromeでは、http通信の場合、「保護されていない通信」というメッセージがアドレスバーに表示され、https通信の場合は、アドレスの左側に「鍵のマーク」のアイコンが表示されます。

HTTP通信       

HTTPS通信

HTTPとは何か?

ではまずHTTPとは何かについて解説していきます!

HTTP(Hyper Text Transfer Protocol)とは、ブラウザとサーバーがデータをやり取りするための「共通言語」のようなものです。例えば、ブラウザのURLバーに以下のURLを入力してアクセスしたとします。

URL
http://www.example.co.jp/

このとき、ブラウザはHTTPを使って「このウェブサイトの内容を表示してほしい」とサーバーにリクエストを送信します。サーバーはそのリクエストを受け取り、必要なデータを返すことで、私たちはブラウザ上にウェブページを見ることができます。

HTTPは、ブラウザとサーバー間の通信のルールを定めており、これにより異なるブラウザやサーバーでも同じようにデータがやり取りされ、同じようにページが表示される仕組みを実現しています。インターネット上の膨大なデバイスやプラットフォーム間でデータを共有するには、このような共通のプロトコルが必要不可欠です。

Webページの表示

http.png

では、なぜWebページを表示するのにHTTPプロトコルが必要なのでしょうか?
もっと言うと、そもそもWebページはどのようにして表示されているのでしょうか?

私たちがWebページを開くとき、ブラウザはサーバーに 「このページを見せて」 とリクエストを送ります。このとき、「http://」を通じてサーバーに対して、HTTPというプロトコルを使って通信していると知らせています。

例えば、http://www.example.co.jp/ にアクセスする場合、スマホやパソコンのブラウザはまずDNS(Domain Name System)という仕組みを使って 「www.example.co.jp」 がどのサーバーにあるかを確認します。そして、そのサーバーにHTTPリクエストを送信し、サーバーがそのリクエストに応じてWebページの内容を返してきます。

ブラウザはその内容をもとに文字や画像、デザインを組み立てて、画面に表示しているのです。この一連の流れが、私たちが普段何気なく見ているWebページの表示プロセスです。

ここで重要なのが、スマホやパソコン、さらにWindowsやMacなど、利用する環境が異なっても、HTTPプロトコルを使うことで通信方法が統一されているという点です。もし環境によってページの受け渡し方法が異なっていたら、開発や利用に多大な手間がかかってしまいます。しかし、HTTPという共通のプロトコルを定めることで、デバイスやOSの違いを意識せず、どんな環境でも一貫した通信ができるようにしています。これにより、ユーザーも開発者もシンプルにWebを利用できるのです。

HTTPの仕組みや特性について詳しく知りたい方は、以下のタブをご参照ください。

HTTPの基本的な仕組みや特性

HTTPの基本的な仕組みや特性

Webページの表示の流れがわかったところで、HTTPの基本的な仕組みや特性についてもう少し掘り下げてみましょう。HTTPには、データの取得や送信を指示するためのHTTPメソッド、リクエストの結果を知らせるHTTPステータスコード、通信の特性であるステートレス性、通信を細かく制御するHTTPヘッダーなどの要素があります。これらは、HTTP通信の基礎を理解する上で非常に重要です。

それぞれの内容について解説していきます。

HTTPメソッド

WebブラウザからWebサーバにリクエストが送信されるとき、単に「このページを見たい!」だけでなく、さまざまなお願いが出されることがあります。Webページを表示するには、「どのデータに対して何をしてほしいのか」をサーバ側に伝える必要があります。

例えば、Webブラウザがサーバに「このデータを見せて!」と頼むだけでなく、「新しいデータを追加して!」や「このデータを削除して!」など、いろいろな要求をする場面が出てきます。こうしたリクエストの種類を伝えるために、HTTPメソッドが使われるのです。

以下がWebページの操作に使われる主な6つのHTTPメソッドです。

HTTPメソッド 説明
GET サーバからデータを取得するためのリクエスト。Webページの読み込みなど、クライアントが情報を要求する際に使われます。
POST サーバに新しいデータを送信するためのリクエスト。フォームの送信や新しいデータの登録など、データをサーバに追加したいときに使います。
PUT サーバ上の既存データを更新するためのリクエスト。データの全体を新しい情報で置き換える際に使用されます。
DELETE 指定したデータをサーバから削除するリクエスト。不要なリソースを消去したいときに使われます。
HEAD GETと同様のリクエストですが、データ本体ではなく、レスポンスのヘッダーだけを取得します。
CONNECT 通信を中継するために使用されるメソッド。HTTPS通信の確立時に使われることが多いです。

HTTPステータスコード

HTTPステータスコードとは、Webサイトにアクセスしたときに表示される3桁の数字で、正常にページが表示されない場合などに目にすることが多いものです。

例えば、「404」や「503」といったエラー番号を見たことがあるかもしれません。これらは、サーバーがどのようにリクエストに応答したかを示すもので、多くの種類があり、それぞれ異なる意味を持っています。

詳しい内訳を紹介すると以下のとおりです。

HTTPステータスコード番号 説明
100番台 情報レスポンス
200番台 成功レスポンス
300番台 リダイレクション
400番代 クライアントエラー
500番代 サーバーエラー

ここで全てのステータスコードを紹介すると長くなってしまうので、代表的なものを数個選んで紹介します。

代表的なHTTPステータスコード
HTTPステータスコード番号 説明
100 Continue リクエスト継続可能
200 OK リクエストが成功
301 Moved Permanently リソースが新しいURLに恒久的に移動
302 Found リソースが一時的に別の場所にある
304 Not Modified リクエストしたリソースが更新されていない
400 Bad Request リクエストの内容が正しくなく、サーバーが処理できない
401 Unauthorized 認証が必要
403 Forbidden リクエスト自体は問題ないが、アクセスが許可されていない
404 Not Found リクエストされたリソースが見つからない
500 Internal Server Error サーバー内部の問題でリクエストを処理できなかった
503 Service Unavailable サーバーが一時的にリクエストを処理できない

ステートレス性

HTTPは「ステートレス」なプロトコルであると言われています。ステートレスとは、各リクエストが独立しており、リクエスト間で状態を保持しないことを意味します。たとえば、Webページの閲覧で次々とリンクをクリックしても、HTTP通信はそれぞれのリクエストを別個のものとして処理します。つまり、サーバーは前回のリクエストやその結果を「覚えていない」のです。

23.png

※この画像は、サーバーがリクエストごとに状態を保持せず、同じ確認を繰り返す必要があることを示しています。

この例では、客(クライアント)がカフェラテを注文するたびに、店員(サーバー)は「サイズはどうしますか?」「何をLサイズにしますか?」と毎回確認しています。サーバー側は、前回の注文内容を覚えていないため、何度も情報を再確認しなければなりません。これがHTTPのステートレスな特性を示しています。

では、なぜWebでの利用時に毎回情報を入力する必要がないのかという疑問が生まれるかもしれません。実は、WebアプリケーションではステートレスなHTTPに対して、クライアントが自ら情報を提供する仕組みや、Cookieやセッションなどの状態管理方法を使っています。

24.png

※この画像ではクライアントの状態を一時的に保持することによって、再確認が不要になっています。

例えば、Cookieやセッションを使ってクライアントの状態を保持すると、クライアントが再度リクエストを送信した際に、その情報をもとにスムーズな対応が可能になります。このような仕組みのおかげで、ユーザーはログイン状態やカートの内容を保持したまま、操作を続けることができるのです。

ステートフル性

ノード1 (1).png

※この画像ではステートフル性について解説しているものであり、HTTPSとは関係はないです。

これは完全に余談になるのですが、ステートレス性があるのであればステートフル性も存在します。ステートフル性とは、サーバーがクライアントとの「状態」を保持し、前回のリクエストや操作履歴を覚えている状態を指します。主なステートフルなプロトコルの例としては、ファイル転送プロトコルのFTPやメールの送受信の通信プロトコルTCPなどが挙げられます。

HTTPSとは何か?

21.png

HTTPについて詳しくなったところで、次はHTTPSについてみていきましょう。HTTPに「S」が加わったことで、どのような違いやメリットがあるのか、具体的な仕組みとその重要性について見ていきます。

HTTPS(Hyper Text Transfer Protocol Secure)は、インターネット上で安全なデータ通信を行うために開発されたプロトコルです。HTTPSの最大の特徴は、SSL(Secure Sockets Layer)またはTLS(Transport Layer Security)と呼ばれる暗号化技術を使って、データのやりとりを保護する点にあります。

正確には、SSL/TLSプロトコルにより提供されるセキュアな接続の上でHTTP通信をすることをHTTPSと呼んでおり、厳密にはHTTPS自体はプロトコルではありません。

HTTPSでは、ブラウザ(クライアント)とWebサーバーの間で行われる通信内容が暗号化されるため、外部の第三者が通信内容を盗み見たり、データを書き換えたりすることが困難になります。この暗号化技術により、特に個人情報や支払い情報を扱う場面でのセキュリティが大きく向上します。

さらに、HTTPS対応サイトには「鍵マーク」や「保護された通信」の表示があり、ユーザーにとってもそのサイトが信頼できることが一目でわかります。また、Googleなどの検索エンジンでも、HTTPS対応サイトをSEO評価で優遇する傾向があり、安全性だけでなくサイト運営にとっても有利なプロトコルです。

現代のWebサイトでは、ユーザーの情報保護や信頼性の向上を図るためにHTTPSは不可欠なものとなっており、ほぼ標準のセキュリティ対策として採用されています。

HTTPSの仕組み(SSL/TLS)

HTTPSが安全な通信を実現できるのは、SSL(Secure Sockets Layer) やその後継であるTLS(Transport Layer Security) という暗号化技術を使っているためです。このSSL/TLSは、通信内容を暗号化するだけでなく、通信相手が正しいサーバーかどうかを確認する役割も担っています。

どちらもデータの暗号化と認証を行うためのプロトコルですが、TLSはSSLの後継バージョンであり、より高度なセキュリティ機能を持っています。

SSLとは?

SSLは、インターネット上でデータを暗号化してやりとりするために開発されたプロトコルです。もともとWeb通信を安全に行うために作られ、特にネットバンキングやオンラインショッピングで個人情報を保護するために利用されてきました。

SSLでは、通信を暗号化するために「公開鍵」と「秘密鍵」という2つの鍵が使用されます。通信開始時に「ハンドシェイク」と呼ばれる手順を行い、クライアントとサーバー間で公開鍵を交換してデータを暗号化します。公開鍵で暗号化されたデータは、そのデータに対応する秘密鍵を持つサーバーだけが解読できるため、第三者が傍受しても通信内容は保護されます。

しかし、SSLにはいくつかの脆弱性が見つかり、2015年以降は安全性が強化されたTLSへと移行するのが標準的になっています。

SSL/TLS通信では、まずサーバーの認証を行い、次に「公開鍵」と「秘密鍵」を使って「共通鍵」を共有する手順を「ハンドシェイク」と呼びます。SSL/TLSセッションは、必ずこのハンドシェイクからスタートします。

TLSとは?

TLS(Transport Layer Security)は、SSLの改良版として登場し、現在ではWeb通信の暗号化において主流となっているプロトコルです。TLSはSSLの暗号化方式や認証プロセスをさらに強化し、より高度なセキュリティ機能を提供しています。

TLSの主な特徴は、SSLと同様に「公開鍵暗号方式」と「ハンドシェイク」による鍵交換を使う点ですが、加えて改ざん検知や証明書の有効性検証が強化され、セキュリティ性が向上しています。多くのブラウザやWebサーバーは現在、TLSを標準としており、「HTTPS=TLSを使用した通信」 として理解されることが一般的です。

SSL/TLSの仕組みとHTTPSにおける役割

SSLやTLSを利用したHTTPS通信は、まずクライアント(ブラウザなど)とサーバーがハンドシェイクを行うことで暗号化の準備を整えます。このハンドシェイクによって暗号化通信を行うための鍵が生成され、データが暗号化されてやり取りされるようになります。さらに、SSL/TLSを通じて取得されるSSL証明書により、ユーザーはそのWebサイトが信頼できる相手であると判断できます。

SSLからTLSへと進化することでセキュリティがより強化され、HTTPS通信は機密情報を守るための標準的な手段として、現代のインターネットに欠かせない存在となっています。

なぜHTTPSが必要なのか?

HTTPSはインターネット上での安全な通信を確保するために欠かせない存在です。ここでは、HTTPSの重要性がわかる4つの利点について詳しく解説していきます。

データの盗聴防止

HTTPSでは通信内容が暗号化されているため、データがネットワーク上で傍受されても、第三者には内容を解読できません。例えば、ユーザーがログインページに入力したパスワードや、オンラインショップで入力したクレジットカード情報などが安全にサーバーに送信されるようになります。

通常のHTTPでは、通信内容がそのままの状態で送受信されるため、Wi-Fiのハッキングなどによって簡単に盗聴されるリスクがあります。しかし、HTTPSではSSL/TLSによってデータが暗号化され、解読には膨大な時間と計算が必要になるため、ほぼ不可能とされています。これにより、重要なデータが第三者に盗み見されるリスクが大幅に低減されます。

改ざん防止

HTTPS通信では、データが暗号化されているため、送受信中のデータが第三者に改ざんされにくくなります。たとえば、オンラインショップの支払いページで通信内容が改ざんされ、金額や振込先が変更されてしまうといったリスクが防止されます。

また、SSL/TLSの仕組みでは、サーバーがクライアントに返すデータの内容が途中で変更されていないことを保証するメッセージ認証コード(MAC)が使われます。この認証コードにより、受信したデータがサーバーから送信された正しいものであると確認できるため、データの正確性が保たれます。これにより、ユーザーは改ざんされていない信頼性のある情報を受け取ることができます。

ユーザー信頼の向上

HTTPS対応のWebサイトは、ブラウザのアドレスバーに「鍵マーク」や「保護された通信」の表示がされ、ユーザーに安全な通信が行われていることを知らせます。特に、オンラインショッピングやネットバンキングなど、個人情報や金銭のやり取りが行われるWebサイトでは、この鍵マークが表示されていることで、ユーザーはサイトへの信頼感を持ちやすくなります。

さらに、HTTPS対応のサイトは、SEO(検索エンジン最適化)の面でも有利です。Googleなどの検索エンジンでは、HTTPS対応サイトを優先的に評価し、検索結果の上位に表示させる傾向があります。したがって、HTTPS対応をすることは、ユーザーの信頼性を高めるだけでなく、アクセス数の向上にもつながります。

Webサイトの高速化

HTTPSにはセキュリティ面だけでなく、Webサイトの表示速度も向上させるメリットがあります。特に、すべてのページをHTTPSで統一する常時SSL化を行うことで、サイトの表示がさらに高速化されるのです。

これは、HTTPSがHTTP/2やHTTP/3といった新しい通信プロトコルとセットで使用されることが多いためです。たとえば、HTTP/2には「マルチプレックス機能」という仕組みがあり、これによって一度に複数のリクエストを処理できるため、画像やCSSファイルなどを並行して読み込みが可能になり、ページの表示がスピードアップします。また、「サーバープッシュ機能」という機能で、サーバーがクライアントからのリクエストを待たずに、必要なデータを先回りして送ってくれる仕組みもあります。

HTTP/3では、QUICというプロトコルが採用され、さらに通信の遅延が減り、読み込みが速くなるため、HTTPS対応サイトでの体感速度は向上します。こうした理由で、HTTPS化は単なるセキュリティ強化だけでなく、Webサイトのパフォーマンス面にも効果があるのです。

HTTPSへの移行方法

最後に、HTTPからHTTPSへの移行方法について解説します。もし気になる方は参考にしてみてください。

URLを「https」に変更する方法は、一見複雑そうに見えるかもしれませんが、基本的な手順を理解すればスムーズに進められます。ここでは、移行のための6つの手順について、順を追って解説していきます。

1. サーバーの対応状況を確認する

まず、使っているサーバーがSSL/TLSに対応しているかどうかを確認します。ほとんどのホスティングサービスは現在SSL/TLS対応ですが、念のためチェックしておきましょう。サーバーの管理パネルやサービスのドキュメントを見て、SSL証明書の設定ができるかどうかを確認します。

2. CSR(証明書署名要求)を作成する

次に、SSL証明書を発行してもらうための「CSR(証明書署名要求)」を作成します。CSRには、組織名やドメイン名、所在地、公開鍵などの情報が含まれており、証明書を発行する認証局(CA)に送るものです。CSRの作成は、サーバーの管理ツール(例:cPanelなど)や、コマンドラインから簡単に行えます。

3. SSLサーバー証明書を申請・取得する

CSRができたら、それを使って認証局(CA)にSSLサーバー証明書を申請します。証明書には「ドメイン認証(DV)」「企業認証(OV)」「拡張認証(EV)」などがあり、セキュリティレベルや価格が異なります。目的に合った証明書を選んで申請を行い、認証局から証明書が発行されるのを待ちます。証明書が発行されるまでの期間は、選んだ証明書の種類や認証局によって異なるので確認しておきましょう。

「ドメイン認証(DV)」「企業認証(OV)」「拡張認証(EV)」の比較
項目 ドメイン認証(DV) 企業認証(OV) 拡張認証(EV)
セキュリティ 最低限 中レベル 最高レベル
認証方法 ドメイン認証 ドメイン認証 ・組織実在認証 ドメイン認証 ・組織実在認証 ・電話認証
コスト 無料~数千円 数万円 数十万円
発行までの時間 即時~数時間 数日~1週間 1週間〜数週間

4. SSLサーバー証明書をインストールする

証明書が発行されたら、それをサーバーにインストールします。管理パネルを使ったり、手動で設定ファイルに証明書情報を追加したりすることで、インストールが完了します。証明書をインストールすると、サーバーがHTTPS通信に対応し、通信が暗号化されるようになります。

5. リンクを「https://」へ置換する

次に、Webサイト内のリンクを「http://」から「https://」へと変更します。ページ内のURLや画像、CSSファイル、JavaScriptファイルのリンクをすべてHTTPSに置き換えていきます。これを行うことで、サイトのすべてのリソースが安全な通信で読み込まれ、「保護された通信」としてブラウザに表示されるようになります。

6. HTTPをHTTPSにリダイレクト設定する

最後に、HTTPからHTTPSへのリダイレクトを設定します。これを設定することで、HTTPでアクセスされた場合でも自動的にHTTPSに転送され、常に安全な通信が確保されます。多くの場合、.htaccessファイルやサーバー設定にリダイレクトルールを追加することでリダイレクトが実現できます。設定後、ユーザーがどのURLでアクセスしても自動的にHTTPSで接続されるようになります。

結局HTTPとHTTPSは何が違うの?

ここまで見てきたように、HTTPとHTTPSにはいくつかの重要な違いがあります。HTTPは、通信内容が暗号化されずそのまま送受信されるため、第三者が内容を盗み見たり改ざんしたりするリスクがあります。一方、HTTPSではSSL/TLSを用いて通信が暗号化され、データの盗聴や改ざんを防ぐ仕組みが備わっています。

また、HTTPSでは通信開始時にSSL/TLSハンドシェイクが行われ、サーバーの証明書を使って信頼性が確認されます。これにより、ユーザーはWebサイトの安全性を視覚的に確認でき、通信内容が保護されるため、個人情報や機密データも安心してやり取りできるようになります。

さらに、ブラウザ上での表示や検索エンジンの評価にも違いがあり、HTTPS対応のサイトは「鍵マーク」が表示され、GoogleのSEOでも有利になるなど、セキュリティとユーザーの信頼性が向上します。

要するに、HTTPSはHTTPに比べて「安全性」「信頼性」「ユーザー体験」の面で優れたプロトコルであり、現代のWebでは標準的な通信方式となっています。

他のプロトコル

余談ですが、Web通信以外にも、さまざまな用途に合わせたプロトコルが存在しています。例えば、ファイルの転送にはFTP(File Transfer Protocol)、メールの送信にはSMTP(Simple Mail Transfer Protocol)が使われています。また、動画や音声のストリーミングにはRTMP(Real-Time Messaging Protocol)やMMS(Microsoft Media Server Protocol)が利用され、リアルタイムでスムーズにデータが再生されるよう最適化されています。

それぞれのプロトコルは異なる用途やデータ形式に対応して設計されており、データを効率よくやり取りできるように工夫されています。インターネット上での多様なサービスは、こうした様々なプロトコルがうまく連携することで成り立っています。

まとめ

この記事を通じて、HTTPとHTTPSの違いや、それぞれの仕組みと重要性について理解が深まったのであれば幸いです。インターネットが私たちの生活に不可欠なものとなる中で、情報の安全性を確保することがますます重要になっています。HTTPSは、単に「安全な通信」というだけでなく、信頼性と利便性を提供する基盤です。

この機会に、身近なWebサイトで「https://」が使われているかどうか、少し気にしてみるのも良いかもしれません。より安全なWeb体験を通じて、インターネットの恩恵を安心して享受していきましょう。

弊社Nucoでは、他にも様々なお役立ち記事を公開しています。よかったら、Organizationのページも覗いてみてください。
また、Nucoでは一緒に働く仲間も募集しています!興味をお持ちいただける方は、こちらまで。

212
229
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
212
229

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?