はじめに
インターネットとWebサイトのセキュリティについて話すとき、TLS(トランスポート層セキュリティ)とSSL(セキュアソケット層)がよく言及されます。素人にとってさらに混乱させるために、これらの用語はしばしば同じ意味で使用されます。
しかし、TLSとSSLは実際にどのように機能し、注意すべき違いはありますか?
このチュートリアルでは、TLSとSSLのセキュリティプロトコル、それらの違い、およびどちらを使用する必要があるかについて説明します。
TLSとSSL
TLSとSSLはどちらも、Webサーバーとユーザー間のデータを暗号化するために使用される暗号化プロトコルとして機能します。
SSLの元のバージョンは1994年にNetscapeによって開発されましたが、簡単に悪用されるセキュリティ上の欠陥のために正式にリリースされることはありませんでした。アップグレードされたバージョン2.0は1995年2月にリリースされましたが、それ自体に重大な欠陥があり、わずか1年後にSSL3.0によってパッチが適用されました。
TLSは、SSL3.0のアップグレードとしてコンセンサス開発によって考案されました。 1999年にリリースされ、2006年にTLS 1.1に置き換えられ、CBC(Cipher Block Chaining)に対する保護が追加されました。 2008年、TLS 1.2はさらに一連のアップグレードを追加し、最新バージョンはTLS 1.3で、2018年にリリースされました。
TLSとSSLは基本的に似ていますが、TLS1.0がSSL3.0に基づいていることを考えると、それらの動作方法にはまだ違いがあります。
SSL | TLS | |
---|---|---|
暗号スイート | Fortezza暗号スイートのサポートを提供します。 | RC4、Triple DES、AES、IDEAのサポートを提供します。 |
アラートメッセージ | 「証明書がありません」というアラートメッセージ。 | 状況に応じて異なるアラートメッセージ。 |
プロトコルの記録 | MAC(メッセージ認証コード)を使用します。 | HMAC(ハッシュベースのメッセージ認証コード)を使用します。 |
ハンドシェイクプロセス | ハッシュ計算にはマスターシークレットとパッドが含まれます。 | ハッシュはハンドシェイクメッセージに対して計算されます。 |
メッセージ認証 | キーの詳細とアプリケーションデータを隣接させるアドホックな方法。 | HMACを介した隣接するキーの詳細とアプリケーションデータ。 |
握手の問題
「ハンドシェイク」とは、安全な接続を確立し、使用する暗号化のタイプを決定する、Webサーバーとユーザー間の通信プロセスの一部を指します。
一般的に、SSLとTLSの両方のハンドシェイクプロセスは次の手順に従います。
1.エンドユーザーのシステムが安全な接続を要求します サーバーから、データの暗号化に使用されるアルゴリズムツールキットである暗号スイートのリストを受け取ります。システムはこれを独自の暗号スーツのリストと比較し、システムとサーバーの両方が使用できるものを選択します。
2.サーバーはデジタル証明書を提供します 身元の証明として。ユーザーのマシンは証明書を受け取り、その信頼性を確認します。
3.サーバーの公開鍵を使用して、エンドユーザーのシステムとサーバーがセッション鍵について合意します データの暗号化に使用します。
注: 名前が示すように、セッションキーは単一の通信セッションにのみ使用されます。ユーザーとサーバー間の接続が何らかの理由で中断された場合、通信が復元されると、新しいセッションキーが作成されます。
ハンドシェイクを実行する場合、SSLはポートを使用して接続を確立します(デフォルトでは、これはポート443です)。一方、TLSは、セキュリティで保護されていないチャネルを介してハンドシェイクの最初のステップ(セキュリティで保護された接続を要求)を開始し、ハンドシェイクが開始されるとポート443に切り替わります。
TLSとSSLはデータを保護するためにどのように機能しますか?
上で説明したように、ハンドシェイクプロセスでは、サーバーがデジタル証明書と公開鍵をエンドユーザーのシステムに送信して、安全な接続を確立します。 SSL証明書/TLS証明書をインストールすると、Webサーバーが認証され、ハンドシェイク中に使用される公開鍵と秘密鍵が提供されます。
証明書がないと、Webサーバーにアクセスしようとするユーザーは「接続はプライベートではありません」を受け取ります。 エラーメッセージ。これは、データが公開されている可能性があり、ユーザーがWebサイトを離れる可能性があることをユーザーに通知します。
TLSとSSLのどちらを使用しますか?
最近では、SSLと以前のバージョンのTLSの両方が廃止されたと見なされています。 SSL 2.0および3.0は2015年にIETFによって非推奨になりましたが、TLS 1.0および1.1は2020年の初めに非推奨になり、現在新しいバージョンのブラウザから削除されています。
2つから選択する場合、TLSが当然の選択です。 SSLへのアップグレードとして機能するだけでなく、パフォーマンスも大幅に向上します。
注: 新しいバージョンのWebブラウザはSSLのサポートを停止し、Webサイトの所有者にTLSへの移行を推奨しています。たとえば、GoogleChromeはERR_SSL_OBSOLETE_VERSIONの表示を開始しました まだSSLを使用しているWebサイトでの警告。
どのTLS/SSLプロトコルが有効になっているかを確認する方法
Webサーバーが廃止されたTLS/SSLバージョンを使用しているかどうかわからない場合は、Webブラウザを使用してすばやく確認できます。
GoogleChromeとMicrosoftEdgeで、右クリック ウェブページの空白の領域で、[検査]をクリックします 。 検査で セキュリティの下のウィンドウ タブで、ウェブサイトのデジタル証明書の概要を見つけます。
Firefoxを使用して、ページを右クリックし、ページ情報の表示をクリックします。 。デジタル証明書の詳細は、セキュリティにあります。 タブ。
または、オンラインのTLS/SSLチェッカーツールを使用します。
古いバージョンのTLSとSSLを無効にする方法
TLS 1.3は、ユーザーのシステムとWebサーバー間の安全な通信を確立するために使用される最新かつ最も安全な暗号化プロトコルです。非推奨バージョンのTLSおよびSSLは、セキュリティの脆弱性のためにセキュリティリスクをもたらします。セキュリティ上の理由から、ライブサーバーではSSLバージョン2と3、およびTLSバージョン1.0と1.1を無効にします。
Webサーバーで許可されているプロトコルは、TLS1.2とTLS1.3のみです。
SSL 2.0または3.0、あるいはTLS 1.0を無効にする手順は、サーバーがApache、NGINX、Tomcatのいずれを使用しているかによって異なります。
Apache
ApacheサーバーでSSL2と3、およびTLS 1.0と1.1を無効にするには、以下の手順に従います。
1.Apache構成ファイルを見つけます。デフォルトのファイルの場所はシステムによって異なります:
- Debian / Ubuntuベースのシステムでは、デフォルトのファイルの場所は
/etc/apache2/apache2.conf
です。 - 仮想ホストで構成されたDebian/Ubuntuベースのシステムでは、デフォルトのファイルの場所は
/etc/apache2/sites-enabled/
です。 - Red Hat / CentOSベースのシステムでは、デフォルトのファイルの場所は
/etc/httpd/conf/httpd.conf
です。 - 仮想ホストで構成されたRedHat/ CentOSベースのシステムでは、デフォルトのファイルの場所は
/etc/httpd/sites-enabled/
2.構成ファイルを開き、 SSLProtocol
を見つけます。 エントリ。
3.エントリを編集して、SSL 2.0、SSL 3.0、TLS 1.0、およびTLS1.1を無効にします。
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
4.変更を有効にするためにApacheサービスを再起動します。
service apache2 restart
または
service httpd restart
注: サーバーの構成によっては、デフォルトの構成ファイルだけでなく、複数の場所でこれらの変更を行う必要がある場合があります。
NGINX
NGINXサーバーでSSL2と3、およびTLS 1.0と1.1を無効にするには、以下の手順に従います。
1.NGINX構成ファイルを見つけます。グローバル構成ファイルのデフォルトの場所は/etc/nginx/nginx.conf
です。 、ただし、 /etc/nginx/sites-enabled/
に個別のサーバーブロック構成がある場合があります 。
2.構成ファイルを編集してTLS1.2を有効にします:
ssl_protocols TLSv1.2;
3. NGINXサービスを再起動します:
service nginx restart
注: NGINXにSSL証明書をインストールする方法を学びます。
Tomcat
TomcatサーバーでSSL2と3、およびTLS 1.0と1.1を無効にするには、以下の手順に従います。
1.Tomcat構成ファイルを見つけます。デフォルトの場所はTOMCAT_HOME/conf/server.xml
です。 。
2.構成ファイルを編集してTLS1.2を有効にします。
- Tomcat 5および6の場合(6.0.38より前):
sslProtocols = "TLSv1.2"
- Tomcat 6および7(6.0.38以降)の場合は、次の行を編集します。
sslEnabledProtocols = "TLSv1.2"
3.変更を有効にするためにTomcatサービスを再起動します。