SSL/TLSとSSHはどちらも公開鍵暗号を使用する暗号化プロトコルです。しかし、異なる対象の異なる問題を解決します。SSL/TLSはWeb接続(HTTPS)を保護します。SSHはリモートサーバーアクセス(ターミナル/コマンドライン)を保護します。
クイック比較
| SSL/TLS | SSH | |
|---|---|---|
| 正式名称 | Secure Sockets Layer / Transport Layer Security | Secure Shell |
| 目的 | Webトラフィックの暗号化 | リモートサーバーアクセス |
| 使用者 | ブラウザ、Webサーバー、API | システム管理者、開発者 |
| ポート | 443(HTTPS) | 22 |
| 認証 | 認証局からの証明書 | 公開鍵またはパスワード |
| 認証局が必要 | はい(公的な信頼のため) | いいえ |
| 典型的なユーザー | Webサイト訪問者(無意識) | サーバー管理者(意図的) |
| 接続タイプ | クライアント(ブラウザ)→ サーバー | ユーザーターミナル → サーバー |
| 暗号化対象 | HTTPリクエスト/レスポンス | シェルコマンド、ファイル転送 |
| 例 | HTTPS Webサイト、API、メール(IMAPS) | ssh user@server、scp、sftp |
SSL/TLSを一言で
SSL/TLSはWebブラウザとサーバー間の接続を暗号化します。https://example.comにアクセスすると、ブラウザはサーバーのSSL証明書(認証局が発行)を検証し、暗号化パラメータをネゴシエートし、すべてのトラフィックが暗号化チャネルを通じて流れます。ユーザーは何もする必要がありません — HTTPSは透過的です。
SSHを一言で
SSHはユーザーのターミナルとリモートサーバー間の接続を暗号化します。ssh user@server.comを実行すると、SSHクライアントはサーバーの公開鍵を検証し(初回接続時に確認)、認証し(パスワードまたはSSH鍵ペアで)、暗号化されたシェルセッションを提供します。SSHは開発者と管理者が使用します — 一般ユーザーはほとんど直接操作しません。
類似の暗号技術を使用
両方のプロトコルは同じ基礎数学を使用します:
| 概念 | SSL/TLS | SSH |
|---|---|---|
| 非対称暗号 | 証明書内のサーバー公開鍵 | サーバーのホスト鍵 + ユーザーのSSH鍵 |
| 鍵交換 | ECDHE Diffie-Hellman | Diffie-HellmanまたはECDH |
| 対称暗号 | AES-GCM, ChaCha20 | AES, ChaCha20 |
| 完全性 | HMAC / AEAD | HMAC / AEAD |
| 前方秘匿性 | ECDHE経由(TLS 1.3で必須) | DH/ECDH経由 |
アルゴリズムはほぼ同一です。違いはプロトコル層と信頼モデルにあります。
信頼モデルの違い
SSL/TLS: 認証局
SSL/TLSは第三者信頼を使用します。ブラウザは約100〜150の認証局を信頼しています。サーバーが信頼されたCAが署名した証明書を提示すると、ブラウザは自動的に受け入れます。
CAがgoogle.comの証明書が実際にGoogleのものであることを検証することを信頼しています。
SSH: Trust on First Use(TOFU)
SSHは直接信頼を使用します。サーバーに初めて接続すると、SSHが尋ねます:
The authenticity of host 'server.com' can't be established.
ED25519 key fingerprint is SHA256:xyz...
Are you sure you want to continue connecting? (yes/no)
フィンガープリントを一度確認し、SSHが記憶し(~/.ssh/known_hosts)、将来の接続はそれに対して検証されます。認証局は関与しません。
併用できますか?
はい — 競合ではなく補完的です:
- SSL/TLSは訪問者が見るWebサイトを保護(
https://example.com) - SSHはWebサイトを実行するサーバーの管理方法を保護(
ssh admin@server) - NginxにSSL証明書をインストールするためにサーバーにSSHで接続するかもしれません
ほとんどのサーバーはポート443(SSL/TLSによるHTTPS)とポート22(SSH)の両方を同時に開いています。
よくある質問
どちらがより安全ですか?
どちらでもありません — 適切に設定されていれば同等に安全です。両方とも同じ暗号アルゴリズムを使用します。「玄関のロックと車のロック、どちらがより安全か?」と聞くようなものです。異なるものを保護しています。
両方必要ですか?
Webサーバーの場合:通常はい。SSL/TLSは訪問者を保護し(HTTPS)、SSHはサーバーへのアクセスを保護します(管理)。異なる目的を果たします。
SFTPとFTPSは同じですか?
いいえ。SFTP(SSH File Transfer Protocol)はSSH上で動作します(ポート22)。FTPS(FTP Secure)はSSL/TLS上で動作します(ポート990または21 + STARTTLS)。両方ともファイル転送を暗号化しますが、異なるプロトコルを使用します。SFTPの方が一般的で設定が簡単です。
SSL/TLSはSSHを置き換えられますか?
いいえ。SSL/TLSはシェルやコマンドラインインターフェースを提供しません。TLSを使って「サーバーにSSHで接続する」ことはできません。一部のWebベースのターミナル(WettyやttydなどのHTTPS/WebSocket経由)はシェルアクセスを提供しますが、基本的な概念は異なります。