ウェブサイトのURLの先頭にhttp:// と https:// がありますが、この違いがよくわかっていません。
調べてみたところ、sはsecureの略で、HTTPSはHTTPよりも安全だと書かれていました。
なんとなくセキュリティに関係していることは理解できたのですが、具体的に何がどう違うのか、技術的な説明がよくわかりません。
例えば、
- HTTPとHTTPSの通信の違いは?
- SSL/TLS証明書とは何で、どのような役割を果たしているの?
- HTTPSにするメリット・デメリットは?
- HTTPのサイトをHTTPSにするにはどうすれば良いの?
などが知りたいです。調べましたが、ある程度エンジニア経験や詳しい方のご回答をいただきたいです。まだまだ未熟で他の方の回答を参考にしたいと思い。
できれば、わかりやすく教えていただけると助かります。
現在、自分のポートフォリオサイトをhttp:// で公開しているのですが、セキュリティ面が不安です。
将来的にはECサイトなども作ってみたいと考えているので、HTTPSへの移行も検討しています。
どのような点に注意すれば良いか、アドバイスをいただけると嬉しいです。
よろしくお願いいたします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2025/07/06 07:56

回答3件
0
HTTPとHTTPSの違いについてのみ説明します。HTTPをHTTPSに変更する方法は、現在の環境によって一番良い方法が大きく異なるので、詳しく述べるのは難しいからです。
昔はHTTPしかありませんでした。それを当時のSSLで包んだのがHTTPSです。つまり、HTTPS = SSL(HTTP)
というような関係です。その後、SSLはバージョンアップでTLSと言う名前に変わり、現在はHTTPS = TLS(HTTP)
という関係です。SSL/TLSとも言われるのは、SSLとTLSが混在している時期が合ったため、両方を表す意味でSSL/TLSとも言われていました。また、古い記事ではSSLとだけになっている場合もあります。現在、SSLの最後のバージョンであるSSL3.0ですら脆弱で使用すべきではないとされているため、現在はTLSしか存在しないとみなしてもいいと思います。以下、ここではTLSとのみ表現します。
では、このTLSとは何かと言うことです。TLSは主にTCP通信へセキュリティレイヤーを追加するモノです。TLSを使えばこれまであった多くのTCP通信について、そのままセキュリティを高めたTCP通信に変更できます。HTTP⇒HTTPSの他にもLDAP⇒LDAPSやIMAP⇒IMAPS等多くのプロとコトルでも使われています。また、通信の途中からTLSに変更するSTRATTLSという仕組みもあります。現在のHTTPではSTARTTLSは使えませんが、Submissionポートとして提供しているSMTP等ではSTARTTLSを必須にしている場合もあります。
TLSはセキュリティレイヤーを追加するモノとのことですが、具体的にどんなセキュリティを追加するのかというと、主に三つです。
- 通信を暗号化する。
- サーバーが本物であることをチェックできるようにする。
- クライアントが本物であることをチェックできるようにする。(オプション)
最初の1.は、通信を暗号化するというのが最もわかりやすいでしょう。TLSは最初にTLSハンドシェイクというのを行います。このとき、この通信専用の使い捨ての共通鍵(ランダムなデータ)を生成し、クライアントとサーバーのみが共通鍵を持ちます。その後の通信はこの共通鍵を使って暗号化するため、復号化できるのもクライアントサーバーだけになります。
さて、この共通鍵を互いに持つため、生成した共通鍵の素(共通鍵自身では無く、共通鍵を暗号化するための鍵、プリマスターシックレットと呼ばれるモノ)を交換し合うのですが、通信しているサーバーが本物であるかどうかが非常に重要になってきます。もしかしたら、偽物のサーバーかもしれませんし、途中の通信を乗っ取って本物のサーバーを装っているのかもしれません。それ以外にも、鍵交換の通信を盗み見している可能性があります。この本物のサーバーと通信していること、そして、鍵交換が本物のサーバーにだけに行くことを保証する仕組みがTLSにはあります。これが2.の事です。そして、このとき重要な役割を持つのサーバー証明書です。
サーバー証明書には、次の三つが含まれています。
- サーバーの情報(HTTPSに使用する場合は、URLの「ホスト名」の情報が必ず含まれている)
- 公開鍵
- 認証局の証明書(または、その中間証明書)による署名(自己署名という場合もある)
この証明書はTLSハンドシェイクでそのまま(暗号化されずに)クライアントに渡されます。クライアントは、まず、アクセスしようとしているURLのホスト名が証明書のサーバーの情報に含まれているか確認します。もじ、含まれていない場合は、別のサーバーが装っているとして、ブラウザー等は警告を出し、通信を停止します。次に、信頼できる認証局の証明書(ルート証明書などと言われる)によって署名、または、それに署名された証明書によって署名(証明書チェーンといわれ、いくつでも繋げられる)されているかを確認します。この信頼できる認証局は、その証明書の要求が正式である(ドメインや組織の実在性が確認されている)場合のみ証明書に署名をつけて発行します。証明書自体はだれでも勝手に作れますが、第三者によって正当性を確認する仕組みを入れることで、勝手に作った証明書で無い事を報償するようにしています。もし、署名の正当性が確認できなければ、ブラウザー等では警告を出し、通信を停止します。
こうして、本物のサーバーであることを確認した場合のみ、証明書を受け付け、証明書の中にある公開鍵を使って、ランダムに生成した共通鍵の素を暗号化します。証明書の中の公開鍵で暗号化されたデータを復号化するには、サーバーにある秘密鍵(これは証明書とペアで作られ、サーバーの中にのみ保管する)でしかできないため、共通鍵の素を受け取れるのもそのサーバーのみとなります。最終的に、通信相手のサーバーだけが、共通鍵を持っていることを保証できます。
さて、最後の3.は何かというと、上の証明書の話はクライアント側でも行うことができます。アクセスするユーザーを厳密に制限したいサービスでは、サーバー証明書と同じようにクライアント用の証明書(クライアント証明書と言われる)を作成し、その証明書をブラウザーに入れていた場合のみ、受け付けるという物があります。クライアント証明書には「この証明書はどこどこの誰々さんです」というクライアントの情報が書いてあり、いわゆるログイン処理の変わりにも使用できます。サーバーだけではなく、クライアントも本物であるかを確認する事で、偽クライアントの接続や中間者攻撃をより確実に防ぐことができます。
以上が、ざっくりとしたTLSの説明です。HTTPSはこのTLSによって、三つ恩恵をHTTPにもたらします。逆に言うと、HTTPだけでは、次のようになっているということです。
- 通信は平文。(インターネットは簡単に途中のパケットを盗み見ることが比較的容易なため、全ての通信内容は第三者に見られている可能性がある。クライアント側で入力した情報も、サーバー側から返す情報も、全て第三者が取得できてしまう。)
- サーバーが偽物の可能性がある。(DNSを狂わすことは比較的容易なため、URLが正しくても、偽物のサーバーの可能性がある。1.の場合と同じく、全ての通信内容は取得される。)
- クライアントが偽物の可能性がある。(状況によりけりだが、ユーザー・パスワードだけの認証では、漏洩した情報でログインされた可能性がある。)
最後に、このような状況もあり、「formがあるサイト」つまり「何かを入力するサイト」がHTTPの場合、Chrome等の一部のブラウザーでは「入力した情報が盗み見られる可能性がある」という警告を出すことがあります。単にリードオンリーなファイルを一般公開しているサイト(アップデートのレポジトリサイト等)以外では、HTTPS化は必須と言ってもいいでしょう。
もし、自分のサイトをHTTPS化したいという場合は、具体的な構成(サーバーはどこのものかとか、どこのサービスを使っているとか、サーバーを自力で作ったのなら、Webサーバーのソフトウェアやその設定)をすべて書いた上で、別途質問する方が良いでしょう。初めにも書きましたが、構成によってやり方は千差万別のため一概にどうすればいいかということは言えません。
投稿2025/07/06 06:32
編集2025/07/06 06:45総合スコア21784
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
できれば、わかりやすく教えていただけると助かります。
ですが、「技術的な説明がよくわかりません。例えば、」で挙げられている4点は、検索すればネット上にいくらでも情報がある内容です。
それらを読んでもわからないのであれば、この場でわかる説明を求めるのは無理でしょう。理解するための基礎スキルがないということかと思います。どういうスキルが足りなくて、どういう勉強をすれば理解できるようになるかは、どこがどうわからないのか次第です。
「この点が分からない。こういう解釈であっているのか?」というように具体的なポイントを絞った質問であれば、回答も可能です。
目的が「httpsについてのネット上の解説記事をいくら読んでも内容がさっぱり理解できない。しかしECサイトも作りたいので、根本から理解したい」のであれば、記事が理解できるように基礎スキルから勉強しましょう。
このようなQAサイトで質問するのもよいですが、あなたが何をどこまで分かっていて、どの部分で躓いているのかをちゃんと書かないと、「解説記事を10サイト読んだけど理解できなかった」が「解説記事を11サイト読んだけど理解できなかった」になるだけだと思います。
(↓↓に書き直し)
raccy さんが、的確・簡潔に説明してくださっているので、理解できれば4点のうち3点は解決すると思います。説明が分からない部分があれば、あるいは、自分の理解があっているか確認したい場合は、この場で質問すればいいかと思います。質問すれば、何をどこまで分かっていて、どの部分で躓いているのかが伝わるので。
4点目は概要はいくらでも情報があるので、その前の3点が理解できていれば概要は理解できると思います。具体的な方法は環境次第というのはraccyさんの回答の通り。自宅サーバーであれば、全部自力で行う必要がありますが、サーバーを借りている場合は、サーバー会社がサポートしている場合もあります。
3点目のhttpsのデメリットだけ書かれていないので補足すると、機能的な意味では実質的には無いでしょう。TLS処理のオーバーヘッドは誤差の範囲かと思います。https化する追加作業が発生することと、証明書には有効期限があるので期限切れになる前に更新作業が必要とかの、手間だけの問題です。あと、有料の証明書を使うならばお金がかかるし、無料の証明書の場合はその証明書サービスの終了リスク。細かいことを言うと、古くてTLS1.2、1.3に対応していないOSやブラウザを使っている人がアクセスできませんが、現在、そういう人が果たして実在するかどうか?
(書き直しここまで)
後半は具体的なので、それへの回答です。
現在、自分のポートフォリオサイトをhttp:// で公開しているのですが、セキュリティ面が不安です。
「セキュリティ面が不安です」の部分、何を心配しているのか具体的に書けますか?
OSその他の脆弱性を突かれてサーバーに侵入される心配であれば、http httpsとも同じです。
ドメイン名の成りすましは、成りすます手間をかけてまで得する人がいるのでしょうか?
エンドtoエンドで暗号化されていないことは、上り下りのデータの中に秘匿すべき情報がないのであれば、どうでもいいことです。
ということで、ポートフォリオサイトであれば、具体的な不安ポイントがなく漠然とした心配であれば、そのままでいいのではないでしょうか。httpsかどうかより、OSその他の脆弱性を突かれないかのほうが重要です。
将来的にはECサイトなども作ってみたいと考えているので、HTTPSへの移行も検討しています。
実運用するECサイトを作るなら、人に教えられるくらいのセキュリティースキルがないとだめでしょうね。これも、httpsかどうかより、中身が心配です。
目的が「ECサイトのプログラムを自分で書きたい」じゃなくて「ECサイトを運営したい」であれば、ECサイト作成サービス的なものを利用するのであればそこまでのセキュリティースキルは要らないと思います。
投稿2025/07/06 17:49
編集2025/07/08 17:02総合スコア86362
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
話題がでかすぎて、ここで質問の回答にできる内容ではないなと思いながら、検索の結果とコメントを並べてみます。
HTTPとHTTPSの通信の違いは?
※ 検索して出てきた説明
HTTP:
ウェブサイトとブラウザ間の通信を平文(暗号化されていない状態)で行います。このため、第三者が通信内容を傍受・改ざんするリスクがあります。
HTTPS:
SSL/TLSプロトコルを使用して通信を暗号化します。これにより、第三者が通信内容を読み取ることができなくなり、安全な通信が保証されます。
※コメント
インターネットというのは、街中の道路と同じでそこで話していることはだれでも聞くことができます。秘密の話をしたいときには、会話の内容を暗号化しておけば、その暗号を解読できる人だけに伝えることができます。
SSL/TLS証明書とは何で、どのような役割を果たしているの?
※ 検索して出てきた説明
TLS証明書の種類:
ドメイン認証(DV)証明書:
ドメインの所有者であることを確認する証明書です。比較的安価で発行が容易ですが、運営者の実在性は確認されません。
組織認証(OV)証明書:
ドメインの所有者に加えて、組織の実在性も確認する証明書です。DV証明書よりも信頼性が高く、企業サイトなどで利用されます。
拡張認証(EV)証明書:
ドメインと組織の実在性に加えて、組織の情報を詳細に確認する証明書です。最も信頼性が高く、金融機関や大手企業などが利用します。
※コメント
道端で話しをしている人の身分証明書で、認証局が発行しています。
HTTPSにするメリット・デメリットは?
※コメント
メリット:
相手との通信の内容が他人には傍受不能であることが保証されていること。認証局であれば、相手についても実在していることが確認できます。
デメリット
暗号化/復号化のためのオーバーヘッドがあります。
通信そのものが暗号化されているので、逆に通信内容のチェックをすることができません。
HTTPのサイトをHTTPSにするにはどうすれば良いの?
※ コメント
HTTPサーバの設定を変更することで対応できます。
Nginx
https://nginx.org/en/docs/http/configuring_https_servers.html
投稿2025/07/05 13:55
総合スコア14542
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。