SSL、TLS、HTTPSの違いは何ですか?

この辺の用語は混乱します。SSL、TLS、HTTPSとは何ですか?それぞれの違いは何ですか?

質問へのコメント (2)
ソリューション

TLSはSSLの新しい名前です。つまり、SSLプロトコルはバージョン3.0になり、TLS 1.0は "SSL 3.1" となります。現在定義されているTLSのバージョンはTLS 1.1と1.2です。新しいバージョンになるたびに、いくつかの機能が追加され、内部の詳細が変更されます。私たちは時々、"SSL/TLS"と言います。

HTTPSはHTTP-within-SSL/TLSのことです。SSL (TLS) は、2つのホスト間で任意のバイナリデータのための安全な双方向トンネルを確立します。HTTP はリクエストを送信し、回答を受け取るためのプロトコルです。それぞれのリクエストと回答は詳細なヘッダと(おそらく)いくつかのコンテンツで構成されています。HTTP は任意のバイナリデータのための双方向トンネル上で動作するように意図されています。そのトンネルが SSL/TLS 接続である場合、全体は HTTPS と呼ばれます。

略語を説明します。

  • SSLとは、Secure Sockets Layerの略です。これはプロトコルの最初のバージョンの発明者であるNetscape社(同社は後にAOLに買収されました)によって作られた造語です。
  • TLS]1とは、Transport Layer Security(トランスポート・レイヤー・セキュリティ)を意味します。この名称は、Netscape社との法的問題を避けるため、プロトコルを"オープンでフリーなものにするために変更されました(そしてRFCとして公開されました)。また、このプロトコルはインターネットベースのソケットだけでなく、あらゆる双方向のバイトストリーム上で動作するという考えを示唆している。
  • HTTPS]3は、「HyperText Transfer Protocol Secure」という意味だと思われますが、これは文法的に正しくありません。HTTPSは、HTTPにSSLを意味するSを加えたものと考えた方がよいでしょう。他のプロトコルの略語も同じように作られています。例えば、SMTPS、IMAPS、FTPS...これらはすべて、SSL/TLSの中で実行することで「保護された」むき出しのプロトコルなのです。
解説 (8)

SSLとTLSは2者間でプライバシーとデータの完全性を提供することを目的としたプロトコルであり(RFC 2246を参照)、信頼できる通信プロトコル(典型的にはTCP)上で動作するように設計されています。TLSの仕様ではソケットについて触れていませんが、SSL/TLSの設計はアプリケーションが従来のTCPソケットとほぼ同様に使えるように行われ、例えばJavaのSSLSocketSocketを拡張しています(ただし、使い勝手には若干の違いがあります)。 HTTPSはSSL/TLS上のHTTPで、まずSSL/TLS接続が確立され、そのSSL/TLS接続を介して通常のHTTPデータが交換されます。 この際、SSLとTLSのどちらを使うかは、ブラウザとサーバーの設定によります(通常、SSLv2、SSLv3、TLS 1.xのいずれかを許可するオプションが用意されています)。 HTTPとSSL/TLSがどのようにHTTPSを形成するかの詳細は、RFC 2818に記載されています。 SSLとTLSの違いについては、StackOverflowとServerFaultの同様の質問に対して私が書いた以下の2つの回答が参考になると思います。

  • SSLとTLSの違いStackoverflow
  • [SSLとTLSのプロトコルレベルでの正確な違いは何ですか?[サーバーフォルト]][7] TLSv1.0はSSLv3.1と考えることができます(実際そうなっています)。

    交換されるレコードの中で)。ただ、TLSv1.0とTLSv1.1を比較するのは簡単です。 TLSv1.0 と TLSv1.1 や TLSv1.2 は、IETF で編集されたものなので、比較するのは簡単です。 というのも、これらはすべてIETFの中で編集されており、ほぼ同じ構造になっているからです。SSLv3は別の機関によって編集されています。 SSLv3は、別の機関(Netscape)によって編集されているため、その違いを見分けるのは少し難しくなっています。 その違いを見分けるのは

    以下は、いくつかの違いですが、すべてを列挙することはできないでしょう。

    • ClientHelloメッセージ(ハンドシェイクを開始するためにクライアントが送信する最初のメッセージ)において、バージョンはSSLv3では{3,0}、TLSv1では{3,1}となります。 TLSv1.0では{3,1}、TLSv1.1では{3,2}です。
    • ClientKeyExchangeが異なります。 MAC/HMACが異なります(TLSはHMACを使用しますが、SSLは旧バージョンのHMACを使用します)。 鍵の導出が異なる。 SSLv3では、クライアントはSSL/TLS Finishedメッセージの送信後、そのままアプリケーションデータを送信することができます。TLSv1では、以下のように待つ必要があります。 TLSv1では、サーバーからのFinishメッセージを待つ必要があります。
    • 暗号スイートのリストが異なります(一部はSSL*からTLS*に名称変更され、同じID番号のままです)。
    • 新しい再ネゴシエーション拡張に関する違いもあります。 一般的に、SSL/TLSのバージョンが高いほど、暗号スイートを適切に選択すれば、より安全です(TLSの高いバージョンでは、より良いとされる暗号スイートを使うことも可能です)。(SSLv2は安全でないと考えられています)さらに、SSLはIETFのスコープには該当しません。例えば、TLS renegotiation fixはSSLv3のために後付けされなければなりませんでした(SSL/TLSスタックはとにかく更新されなければならないのですが)。 この回答にも興味があるかもしれません。
  • TLS / LDAP や TLS / HTTP 接続がセットアップされたとき、ワイヤ上で何が起こりますか?[Stackoverflow]。 SSLとTLSを、"接続時のSSL/TLS"と"TLSへのアップグレード"(アプリケーションプロトコルでのいくつかの会話の後)の違いとして反対している人がいることに注意してください。これらの回答のいくつかは比較的高いupvotedであるにもかかわらず、これは間違っています。この間違いは、Microsoft Outlookのような特定のアプリケーションが、SMTP/IMAPの設定に"SSL"と"TLS"という2つの設定オプションを提供しており、本当は"接続時にSSL/TLS"と"TLSにアップグレード"という意味だという事実が伝播します(JavaMailライブラリも同じだと思いますが......)。 STARTTLSについて書かれたRFCは、TLSがすでに公式RFCだったときに書かれたもので、そのためTLSへの接続のアップグレードについてしか書かれていないのです。実際には、メールクライアントの設定をいじって TLS ではなく SSLv3 を使うようにしても (一般的にはお勧めしませんが)、SSLv3 接続で STARTTLS を使って SSL/TLS にアップグレードできる可能性が高いです。 SSL/TLS へのアップグレードが HTTP プロトコル内で行われる HTTP のバリエーションもあります (LDAP/SMTP の STARTTLS に似ています)。これは RFC 2817 で説明されています。私の知る限り、これはほとんど使われていません(ブラウザのhttps://で使われているものでもありません)。この RFC の主な関連部分は、HTTP プロキシサーバの CONNECT に関するセクションです (HTTP プロキシサーバが HTTPS 接続を中継するために使用されます)。
解説 (4)

SSLとTLSの比較

SSLとTLSはよく同じ意味で使われたり、一緒に使われたりしますが(TLS/SSL)、実は一方がもう一方の前身です - SSL 3.0はTLS 1.0の基礎となり、その結果、SSL 3.1と呼ばれることもあります。

SSLとTLSはどちらがより安全か

セキュリティの面では、どちらも同じように安全であると考えられています。

主な違いは、SSL接続はセキュリティで始まり、そのままセキュリティで保護された通信に移行するのに対し、TLS接続はまずサーバに対して安全でない「Hello」から始まり、クライアントとサーバ間のハンドシェイクが成功してからセキュリティで保護された通信に移行する点です。TLSのハンドシェイクが何らかの理由で失敗した場合、接続は決して行われません。

(SSLとTLSとHTTPの比較)

HTTP プロトコルは、データの要求と受信に使用され、 's'https は、http プロトコルの要求と受信アクティビティを暗号化する安全な SSL にほかならないので、中間者攻撃者が簡単にデータを取得することはできません。

SSLやTLSがHTTPで使用されていない場合

SSLもTLSも使用されていない場合、Webサーバーとの接続は暗号化されず、すべてのデータは平文で送信され、任意の中間管理職の攻撃者がそのデータを取得し、見ることができます。

だから、SSLまたはTLSで行く必要があります

まあ、どちらも同じですが、TLSはより拡張性があり、将来的に多くのサポートを得ることを期待している とTLSは後方互換性があります。

解説 (3)