TLSとSSLはどちらも、インターネット上でデータを安全に認証、転送するためのプロトコルですが、両者にはどのような違いがあるのでしょうか。
この記事では、TLSとSSLの主な違いと各プロトコルがどのようにHTTPSに接続するかをご説明します。また、エンドユーザーは両者の違いやSSL証明書について、あまり気にする必要のない理由にも触れていきます。
TLSとSSLの違い
TLS(Transport Layer Security)とSSL(Secure Socket Layer)は、どちらもインターネット上でデータを移動する際、データを暗号化して接続を認証する暗号化プロトコルです。
例えば、オンラインストアでクレジットカードによる支払いを処理する場合、TLSやSSLを使用すると、データが安全に処理され、第三者がデータを盗用することができません。
では、TLSとSSLの違いは何なのでしょうか。
TLSは、SSLの新しいバージョンです。TLSでは、SSLプロトコルのセキュリティ脆弱性が修正されています。
詳しい違いをご紹介する前に、SSLとTLSの概要を押さえておきましょう。
SSL 2.0は、1995年2月に初めてリリースされました(SSL 1.0はセキュリティホールが原因でリリースされず)。SSL 2.0は一般公開されたものの、またセキュリティホールが発見され、1996年にSSL 3.0へ置き換えられました。
その後、1999年にはSSL 3.0をアップグレードしたTLSの最初のバージョン(1.0)がリリース。それ以来、さらに3つバージョンが開発され、最新版は2018年8月のTLS 1.3になります。
この時点で、既知のセキュリティ脆弱性が原因で、一般公開されたSSL 2.0と3.0は廃止されました(これについては後ほど詳しく)。
SSLとTLSの歴史をまとめると、以下のようになります。
- SSL 1.0:セキュリティホールのためにリリースされず
- SSL 2.0:1995年にリリース後、既知のセキュリティホールが原因で2011年に廃止。
- SSL 3.0:1996年にリリース後、既知のセキュリティホールが原因で2015年に廃止。
- TLS 1.0:1999年にSSL 3.0のアップグレードとしてリリース。2020年に廃止予定。
- TLS 1.1:2006年にリリース。2020年に廃止予定。
- TLS 1.2:2008年にリリース
- TLS 1.3:2018年にリリース
TLSとSSLの仕組み
ウェブサーバーにSSL/TLS証明書(SSL証明書)をインストールします。証明書には、サーバーを認証し、サーバーにデータを暗号化および復号させる公開鍵と秘密鍵は含まれています。
訪問者がサイトにアクセスすると、ブラウザがサイトのSSL/TLS証明書を確認し、ハンドシェイク(公開鍵と秘密鍵で共通鍵を共有)を実行して証明書の有効性を確認し、サーバーを認証します。
訪問者のブラウザは、証明書が有効であると判断し、サーバーを認証すると、データを安全に転送するためのサーバーとの暗号化された接続を確立します。
これには、HTTPSも一役買うことになります(HTTPSは「HTTP over SSL/TLS」の略)。
HTTP、およびその最新版のHTTP/2は、インターネット上でデータを転送する際に重要な役割を果たすアプリケーションプロトコル。
HTTPではデータが暗号化されないため、攻撃に対して脆弱です。SSL/TLSを使用したHTTP(HTTPS)では、転送中のデータが暗号化されて認証されるため、より安全になります。
HTTPSでは、クレジットカード情報を安全に処理することができますが、HTTPにはできません。Google ChromeがHTTPSを推奨してるのはこのためです。
SSLが廃止されてもSSL証明書と呼ばれる理由
TLSはSSLの新しいバージョンであり、一般公開されたSSLの2つのバージョンは、セキュリティ脆弱性が含まれていたため、廃止されたことは先に触れました。
しかし、より新しいセキュリティプロトコルであるTLSの名前ではなく、現在でも「SSL証明書」と呼ばれるのが一般的です。
Kinstaの機能一覧ページでも、無料のTLS証明書ではなく、無料のSSL証明書と表現しています。
SSL証明書という名称が残っている理由は、単に昔の名残であり、主要な証明書の認証局も未だにこの名称を使用していることから、エンドユーザーの間でも「SSL証明書」の名称が定着しているためです。
SSL証明書とは言っても、実際には「SSL/TLS証明書」であり、Kinstaが提供している無料のLet’s Encrypt証明書も同様です。
つまり、証明書ではSSLプロトコルとTLSプロトコルの両方を使用することができます。
SSLのみの証明書、またはTLSのみの証明書というものは存在しないため、SSL証明書をTLS証明書に置き換えるような操作は不要です。
TLSとSSLのどちらを使用すべきか
TLSはSSLを完全に置き換えているため、SSLではなく、TLSを使用してください。
SSLの一般公開されたバージョンは、どちらもセキュリティ上の理由で廃止されているため、2019年以降は安全なプロトコルではありません。
SSLの最新版であるTLSは安全性が高く、TLSの最新版ではパフォーマンスも改善されています。
TLSの方がより安全で高いパフォーマンスを確保できることから、最新のほとんどのブラウザでは、SSL 2.0と3.0のサポートを終了しています。Google Chromeは2014年にSSL 3.0のサポートを終了し、2020年にはほとんどのブラウザがTLS 1.0とTLS 1.1のサポートを終了します。
Google Chromeでは「ERR_SSL_OBSOLETE_VERSION」エラーも表示されるように。
自分のサイトがSSLプロトコルではなく、TLSの最新バージョンを使用しているかを確認するにはどうすればいいでしょうか。
なお、証明書がサーバーが使用するプロトコルと同じことではないことに注意してください。TLSを使用するために証明書を変更する必要はありません。先にも触れた通り、証明書はSSLプロトコルとTLSプロトコルの両方に対応しています。
ウェブサイトが使用するプロトコルをサーバーレベルで確認します。
Kinstaのお客様は、TLS 1.1、TLS 1.2、または最新かつ最も安全、高パフォーマンスなTLS 1.3をご利用いただけます。
Kinsta以外をご利用の場合は、SSL Labsのツールを使って、サイトのプロトコルを確認してください。
例えば、Kinstaでホストされているサイトをテストすると、KinstaがTLS 1.1、TLS 1.2、およびTLS 1.3をサポートし、古くて安全でないSSLは無効になっていることがわかります。
ご利用のレンタルサーバーが、非推奨のSSLプロトコルをサポートしているようであれば、カスタマーサポートに問い合わせるか、以下の手順に従って、主要のウェブサーバーApacheとNginxのSSLを無効にしてください。
Kinstaが複数のTLSプロトコルをサポートしている理由
TLS 1.3が最新でパフォーマンスが最も高いのであれば、なぜKinstaではTLS 1.1と1.2もサポートされているのか、疑問に思う方もいるかもしれません。
複数のプロトコルをサポートするとどのようなメリットがあるのでしょうか。
前述の通り、SSL / TLSハンドシェイクには2つの要素があります。
- ウェブサーバー
- クライアント(通常は訪問者のブラウザ)
ハンドシェイクは、この2つが同じプロトコルをサポートしていなければ機能しません。そのため、複数のプロトコルを使用できるのは、互換性のメリットがあります。
例えば、ChromeとFirefoxは2018年のリリース直後にTLS 1.3のサポートを開始しましたが、AppleとMicrosoftがサポートを開始するまでには少し時間がかかりました。
2019年現在でも、以下のブラウザではTLS 1.3をサポートしていません。
- Opera Mini
- Androidブラウザ
- Opera Mobile
- UC Browser(Android)
- Samsung Internet
- Baidu Browser
TLS 1.3はまだ完全に採用されていませんが、主要なブラウザのすべてがTLS 1.2をサポートしています。
TLS 1.3とTLS 1.2の両方をサポートしていれば、ChromeやFirefoxなど、TLS 1.3をサポートしているブラウザではTLS 1.3の恩恵を受けつつ、全てのブラウザとの互換性を確保することができます。
お使いのブラウザが使用しているSSL/TLSバージョンを確認するには、How’s My SSLツールが便利です。
まとめ
TLSとSSLはどちらも、インターネット上のデータ転送を認証、暗号化するプロトコルです。
よくその違いが比較されますが、TLSはSSLよりも新しく安全なバージョンです。
SSLという名称は未だ使用されていますが、一般公開されたSSLの2つのバージョンはどちらも安全性に欠け、すでに廃止されています。現在は、SSLと呼ばれていても、TLSを意味するのが通例です。
SSLプロトコルとTLSプロトコルの両方を使用するには、サーバーに証明書をインストールする必要があります(WooCommerceストアにSSL証明書をインストールする方法はこちら)。現在の「SSL証明書」は、SSLプロトコルとTLSプロトコルの両方に対応しています。
TLS証明書を使用するためにSSL証明書を変更する必要はありません。SSL証明書を既にインストールしていれば、TLSもサポートされていることを意味します。
安全を考慮し、TLSの最新版を使用することが重要ですが、証明書はサーバーが使用するプロトコルを決定するわけではありません。証明書を取得すると、使用するプロトコルをサーバーレベルで選択することができます。
Kinstaでは、すべての主要ブラウザと互換性のある安全なTLS 1.1、TLS 1.2、およびTLS 1.3をご利用いただけます。