【SSL証明書】FAQ/情報
SSL/TLSとは
ページ更新日:2025/04/13
SSL/TLSとは
SSL/TLSは、インターネット上でデータ通信を暗号化し、情報を安全に送受信するためのプロトコルです。
通信内容を第三者に盗聴されても内容を解読できないようにするだけでなく、サーバー側の身元証明(認証)も提供します。
現在一般に安全とされるのはTLS 1.2以上のバージョンであり、WebサイトではURLを「https://」とすることでSSL/TLSによる暗号化通信が行われます。
Webサーバーには SSL証明書 がインストールされていて、ユーザーのブラウザとの間で暗号化とサーバー認証を実現します。
📌関連FAQ:SSL証明書とは、徹底解説!
SSL
SSL(Secure Sockets Layer)は、は1990年代に米Netscape社が開発した暗号化通信技術です。
WebブラウザのNetscape Navigatorに組み込まれ、インターネット上で初めて一般に広く暗号化通信を提供しました。
TLS
TLS(Transport Layer Security)はSSLの後継規格として1999年にIETFにより制定されたプロトコルで、SSLをベースに安全性を強化したものです。
実質的にはTLS 1.0はSSL 3.0を改良したバージョンであり、両者の仕様上の違いはごくわずかで仕組みもほぼ同じです。
以降TLS 1.1、1.2、1.3と更新が重ねられ、暗号アルゴリズムの強化や脆弱性の対策が施されてきました。
SSL/TLS の名称
現在では古いSSLプロトコル(SSL 2.0や3.0)は脆弱性が発見され非推奨となっており、実際の通信ではTLSが使われています。
しかし「SSL」という名称が既に広く普及しているため、TLSによる通信もまとめて「SSL通信」と呼ばれることが一般的です。
同様に、TLS用のデジタル証明書も慣習的に「SSL証明書」と呼ばれています(実際にはTLSで使用される証明書です)。
名前の混在はありますが、現在主流なのはTLSであり、SSLは歴史的な名称と考えてよいでしょう。
SSL/TLS のバージョン
SSL/TLS には以下のバージョンがあります。安全性向上の歴史は以下の通りです。
- SSL 1.0 (1990年代前半)
SSLの最初の試作版。設計上の欠陥から脆弱性が見つかり、リリースされずに破棄されました。
- SSL 2.0 (1994年)
Netscapeによって公開された最初のSSLプロトコル。
暗号化通信の礎を築きましたが、その後重大な脆弱性が判明し、現在はブラウザでデフォルト無効化されています。
- SSL 3.0 (1996)
SSL 2.0の問題点を改善したバージョンで、一時期広く普及しました。
しかし2014年に深刻な脆弱性POODLE(CVE-2014-3566)が発見され、通信も盗聴され得ることが判明しました。
このためSSL 3.0は非推奨となり、主要ブラウザでも2015年までに無効化されました。
- TLS 1.0 (1999年)
SSL 3.0を基にIETFが標準化したTLSの初版です。名称がSSLからTLSに改められました。
長らく広く使われましたが、脆弱性(BEAST攻撃など)も発見され、
2018年にIETFがTLS 1.0および1.1の廃止勧告を発表、主要ブラウザも2020年までにTLS 1.0のサポートを終了しました。
- TLS 1.1 (2006年)
TLS 1.0のマイナーアップデート版で、AES暗号などより強力な共通鍵暗号のサポートが追加されました。
しかしTLS 1.0と同様に旧式であり、こちらも2020年に主要ブラウザがサポートを終了しています
- TLS 1.2 (2008年)
現在(2025年時点)でも広く使われている主力バージョンです。
ハッシュアルゴリズムにSHA-256を採用するなど複数の改良が加えられ、当時最新だった暗号技術に対応しました。
TLS 1.0/1.1の問題点を解消し、約10年以上にわたり安全な通信の標準として利用されてきました。
現在でもTLS 1.2自体は安全とされていますが、一部古い暗号スイートの使用は避け、可能であれば次のTLS 1.3を利用することが推奨されます。
- TLS 1.3 (2018年)
新のTLSバージョンで、プロトコルに大幅な変更が加えられました。
古く弱い暗号アルゴリズム(例:RSA固定鍵交換やSHA-1ハッシュ)が削除され、より強力な暗号化と高速なハンドシェイクを実現しています。
新規接続時のハンドシェイク往復回数がTLS 1.2の2往復から1往復に削減され、過去に接続経験がある場合は0往復(0-RTT)での再接続も可能となりました。
これによりHTTPS通信の初回遅延が減り、特にHTTP/2/やHTTP/3などの高速通信と相性が良くなっています。
TLS 1.3は現在主要ブラウザやサーバーでサポートされていて、今後の標準となるプロトコルです。
補足: SSL 2.0および3.0は既に廃止済みであり、TLS 1.0/1.1も現在は使用しないことが推奨されています。
実務ではTLS 1.2以上を有効にし、可能であればTLS 1.3を利用することで最新の安全性と性能恩恵を得られます。
また、サーバーやアプリケーションの設定で古いバージョンを無効化し、新しいバージョンのみ許可することが重要です。
SSL/TLS ハンドシェイクの仕組み
SSL/TLSでは、通信を開始する際に ハンドシェイク(Handshake)と呼ばれる手順を経て暗号化のための準備を行います。
ハンドシェイクでは通信に用いるバージョンや暗号アルゴリズムを決定し、サーバーの認証と暗号鍵の交換が行われます。
このプロセスを簡潔に説明すると以下のようになります。
- クライアントからの接続開始
ブラウザなどクライアントはサーバーに接続要求を送り、使用可能なTLSのバージョンや暗号スイートの一覧(Client Helloメッセージ)を提示します。
- サーバーからの応答
サーバーは対応可能な中からTLSバージョンと暗号スイートを選択しクライアントに通知します(Server Hello)。
併せてサーバーの身元を証明する デジタル証明書(SSL/TLS証明書)を送信します。
- サーバー証明書の検証
クライアントは受け取った証明書を検証します。
証明書が信頼できる認証局によって署名され、有効期限内で接続先ホスト名と一致していればサーバーは正当とみなされます。
検証に問題がなければ、クライアントは共通鍵を共有するための情報を、サーバー公開鍵で暗号化して送信します。
- 共通鍵の生成
サーバーはクライアントから送られた情報を自分の秘密鍵で復号し、クライアントと共有する 共通の秘密鍵(セッション鍵) を生成します。
クライアント側でも同じ情報から共通鍵を生成し、両者で同一のセッション鍵が得られます。
- 暗号化通信の開始
ハンドシェイクが完了すると、以降の通信は確立されたセッション鍵を用いた共通鍵暗号方式(例:AESなど)で暗号化されます。
暗号スイート(暗号・鍵交換・改ざん検知)
暗号スイートとは、SSL/TLS通信で使用される「暗号アルゴリズムの組み合わせ」のことです。具体的には、以下の3つの要素で構成されます。
- データ暗号化
通信するデータそのものを暗号化します。高速な共通鍵暗号(対称鍵暗号)を使用します。
代表的な例としてAESやCamelliaなどがあり、これらは送受信双方で同じ鍵(共通鍵)を用いてデータを暗号化・復号します。
- 鍵交換
安全に共通鍵を共有します。公開鍵暗号(非対称鍵暗号)を用いて鍵交換を行います。
代表的な例はRSAやDH(ディフィー・ヘルマン)、DSA、ECDHなどで、これらにより第三者に盗聴されても共通鍵が漏洩しないよう安全に交換します。
- 改ざん検知
通信データの完全性を保証します。ハッシュ関数を用いたHMACなどにより、データが途中で改ざんされていないか検証します。
代表的なハッシュアルゴリズムとしてSHA-1やSHA-256などがあります。
TLS 1.3では暗号化と認証が一体となったAEAD方式を使用します。
以上の組み合わせ(共通鍵暗号 + 公開鍵暗号 + ハッシュ)が1セットになったものが「暗号スイート」です。
通信開始時のハンドシェイクでサーバーとクライアントは互いに対応可能な暗号スイートを提示し、共通して利用できる最も強力な組み合わせが選択されます。
近年では多くのCPUにおいてAES暗号のハードウェア処理(Intel/AMDのAES-NI命令、ARMv8のAES専用処理など)がサポートされています。
そのためサーバーではAESを含む暗号スイートの優先度を上げて性能向上を図ることが一般的です。
一方で、モバイル端末や組み込み機器などAES専用回路を持たない環境では、ChaCha20という別の暗号方式が注目されています。
ChaCha20はストリーム暗号であり、ソフトウェア上で高速に動作する(ハードウェア支援がなくても高速)よう設計されています。
なお、TLS 1.3では組み合わせ指定が簡素化され、強力な楕円曲線DH(ECDHE)による一時的な鍵交換と、AES-GCMやChaCha20-Poly1305といった AEAD(認証付き暗号) のみを使用する方針になりました。これにより暗号スイートの選択肢は減りましたが、安全性と性能が高い方式に限定されることになりました。
Web以外でのSSL/TLSの利用例
SSL/TLSによる暗号化はWebブラウジング以外にも、あらゆる通信分野で活用されています。以下にWeb以外での代表的な利用例を挙げます。
- メール通信
電子メールの送受信でもTLSが用いられ、安全性を高めています。
SMTPやIMAP、POP3といったメールプロトコルにTLSを適用したSMTPS・IMAPS・POP3Sが使われます。
これらによりメールサーバ間、あるいはメールクライアントとサーバ間の通信が暗号化され、漏洩リスクが低減されます。
- VPN接続(SSL-VPN)
リモートアクセス用のVPNにもTLSが活用されています。
特にSSL-VPNと呼ばれる方式では、VPN接続するためにTLSによるトンネリングを行います。
SSL-VPNという名称ですが実際にはTLSが使用され、WebのHTTPSと同様のハンドシェイクを行うことで、暗号通信経路を確立します。
- VoIP通信
インターネットを使った音声通話(VoIP: Voice over IP)にもTLSが利用されることがあります。
VoIPの代表的プロトコルであるSIPでは、SIPSと呼ばれるTLSで暗号化方式が定義されています。
通話の音声データはリアルタイム性のためUDPでのやり取りが多いですが、DTLS(Datagram TLS)やSRTP(Secure RTP)で暗号化・認証保護を行います。
- IoT通信
家電やセンサーなどのIoT (Internet of Things) 機器においても、TLSは重要な役割を果たしています。
IoTデバイスがクラウドのサーバーと通信する際、そのデータ(計測情報や制御コマンドなど)が漏洩・改ざんされないようTLSで暗号化されます。
リソースに限りのあるIoT機器向けには、省電力・省メモリに配慮したTLS実装や、UDP上で動作するDTLSの活用も進んでいます。
このように、SSL/TLSはWeb以外の様々な分野でも安全な通信の基盤として機能しています。
今後もTLS 1.3の普及やポスト量子暗号対応など進歩が続くと予想されますが、基本となる原理は変わりません。
本ドキュメントは、そのような状況の変化をみながら、加筆・修正していきたいと思います。