00 学習目標
01 なぜセキュア化が必要か
02 Implicit TLS と STARTTLS
03 HTTPS
04 メール系のセキュア化
05 FTPS
06 SFTP / SCP は別系統
07 openssl s_client で覗く
08 現代の運用
09 まとめ
10 確認問題
学習目標
本講を終えると、以下を達成できるようになります。
古典アプリ層プロトコルが そのままでは平文 という共通の弱点を持ち、TLS でそれを覆い隠す方針が広がった経緯を述べられる
Implicit TLS (専用ポートで最初から TLS)と STARTTLS (平文セッションを途中から TLS に昇格)の違いを説明できる
主要なセキュア化版のポート番号(HTTPS 443 / SMTPS 465 / Submission+STARTTLS 587 / POP3S 995 / IMAPS 993 / FTPS 990 など)を区別できる
SFTP は FTPS とまったくの別物 (SSH 上の独自プロトコル / 22 番)であることを正確に説明できる
openssl s_client を使って TLS の中で平文プロトコルを手打ちでき、観察したい目的に応じて telnet と使い分けられる
メールの SPF / DKIM / DMARC が、送信元ドメインのなりすまし対策としてどこを検証するか説明できる
HSTS、MTA-STS、DANE、OAuth2 など 「TLS だけでは守れない領域」 を埋める現代の追加対策の位置づけを述べられる
本講は
第25回 TLS/PKI の
応用回 です。TLS の仕組み(ハンドシェイク、証明書、PKI) は前回ですでに学んだ前提で、ここでは「その TLS を
各アプリ層プロトコルにどう被せるか 」というレシピ集に集中します。各プロトコルの平文版の詳細は第12〜16回で扱っています(
HTTP /
メール /
FTP /
telnet 観察 )。
このレッスンの目次
なぜアプリ層を「セキュア化」する必要があったか
HTTP・SMTP・POP3・IMAP・FTP は、いずれも 1970〜80 年代の 「インターネットは信頼できる学術ネットワーク」 という前提で設計されました。パスワードも本文も平文で TCP に流す 設計が当然だった時代です。1990 年代後半から商用利用が爆発し、この前提は完全に崩れました。
POINT
平文プロトコルが現代で抱える3つの脅威:
① 盗聴 (eavesdropping)── 同じ Wi-Fi の他人がパスワードを丸見えで読める
② 改ざん (tampering)── 経路上の中継機が本文を書き換えても気づけない
③ なりすまし (impersonation)── サーバを名乗る偽の機器に騙されても判別できない
TLS(第25回 )はこの3つを 「暗号化 + メッセージ認証 + サーバ認証(PKI)」 でまとめて解決するために設計されました。だから対策の基本パターンは 「既存の平文プロトコルの下に TLS を1段挟む」 ── これだけ。アプリ側の仕様は基本そのままで、TCP の代わりに TLS 越しの TCP を使うように差し替える、というだけのことです。
つながる知識: TLS が「アプリ層と TCP の間に挟まる薄い層」として機能するからこそ、
同じ TLS という部品 を HTTP、SMTP、IMAP、FTP、… に使い回せます。これは
第11回 階層化 で学んだ「層分離の威力」が綺麗に効いている例です。下層を入れ替えても上層をほぼ書き換えなくて済む。
Implicit TLS と STARTTLS ─ 被せ方の2方式
平文プロトコルに TLS を被せる方法は、大きく2つに分かれます。歴史的経緯と運用しやすさから、現代は両方が並走しています。
① Implicit TLS(暗黙的)
専用ポート を別に用意し、最初から TLS でハンドシェイクを始める
TCP 接続が確立した直後に TLS の ClientHello が来る前提
例:HTTPS(443)、SMTPS(465)、POP3S(995)、IMAPS(993)、FTPS 暗黙(990)
長所:仕様が単純、実装が綺麗、ダウングレード攻撃に強い
短所:ポートを2つ用意する必要があり、平文版とは別物として運用
② STARTTLS(明示的)
平文ポートで普通に接続し 、サーバが対応していれば STARTTLS コマンドで TLS に 昇格 する
TLS ハンドシェイク完了後、同じ TCP 接続上で以降は暗号化セッション
例:SMTP Submission(587)、SMTP MTA間(25 のオプション)、IMAP(143)、POP3(110)
長所:ポート1つで平文と TLS が両立、徐々に TLS 化を進められる
短所:「平文部分があるので最初の STARTTLS 自体を中間者が抑える(downgrade)攻撃」のリスク
シーケンスで比較
同じ「平文プロトコル + TLS」でも、被せるタイミングが違う
① Implicit TLS(例:HTTPS / 443)
C → TCP SYN(443)
↓ TCP 確立
C → TLS ClientHello ← 即 TLS 開始
S → TLS ServerHello + 証明書
↓ TLS 確立(暗号化開始)
C → GET / HTTP/1.1 ← 暗号化済み
S → 200 OK
最初から最後まで暗号化、平文部は無し
② STARTTLS(例:SMTP / 587)
C → TCP SYN(587)
↓ TCP 確立
S → 220 ESMTP ← 平文
C → EHLO me
S → 250-STARTTLS …
C → STARTTLS ← ここで昇格要求
↑↓ TLS ハンドシェイク
C → EHLO me(再送、暗号化済み)
前半は平文、STARTTLS 後だけ暗号化
図の見方:Implicit は「TLS 専用ポート」を1つ用意して綺麗に分離。STARTTLS は「平文版とポートを共有」して同じ入り口から段階的に暗号化する。後者は移行時の互換性に強い反面、初期の平文部に「STARTTLS を消す中間者攻撃(STRIPTLS)」のリスクがあり、近年は 強制 STARTTLS (対応していない接続を即切断)で防御するのが標準。
HTTPS ─ Implicit TLS の代表例(443)
Web の世界では HTTPS (HTTP over TLS、ポート 443、Implicit)が事実上の標準になりました。1994 年に Netscape が SSL を作って Web に被せたのが始まり。現在の HTTPS は HTTP/1.1 / HTTP/2 / HTTP/3 のすべての上位バージョンで前提 です。
POINT
現代 Web で HTTPS が「事実上必須」になった3つの理由:
① HTTP/2 / HTTP/3 はほぼ全ブラウザが TLS 必須 として実装(仕様上は不要だが事実上)
② HSTS (HTTP Strict Transport Security)で「このドメインは HTTPS だけ使え」とブラウザに教えられる
③ Google 等が HTTPS を SEO の優遇要因 にし、ブラウザは平文 HTTP を 「保護されていない通信」と表示 するように
HTTPS のポート構成
ポート 用途 方式
80/tcp 平文 HTTP 暗号化なし(現代では多くが 443 へのリダイレクト用)
443/tcp HTTPS Implicit TLS。HTTP/1.1・HTTP/2 はこの上で動く
443/udp HTTP/3(QUIC) QUIC 自体に TLS 1.3 が内蔵 ── 詳細は 発展編 QUIC/HTTP3
HTTPS には STARTTLS 的な仕組み(HTTP Upgrade )も RFC 上は定義されていますが、ほぼ使われていません。HTTPS の世界は 「最初から専用ポート + Implicit」一択 で簡潔に統一されたのが運用上の成功要因でした。
メール系のセキュア化 ─ TLS化と送信元ドメイン認証
メールは「歴史が長い」ぶん、Implicit TLS と STARTTLS の
両方 が並存しています。さらに、通信路を暗号化するだけでは
差出人ドメインのなりすまし までは防げないため、SPF / DKIM / DMARC のような送信元ドメイン認証も組み合わせます。
メール詳細回 でポート番号(25 / 110 / 143)とコマンド体系を学んだ前提で、ここでは安全化の層を整理します。
SMTP のポート3兄弟 ── 25 / 465 / 587 の使い分け
ポート 用途 暗号化 備考
25/tcp MTA ↔ MTA(サーバ間中継) STARTTLS で日和見的(オプション) 家庭の ISP では 外向き 25 番がブロック(OP25B) 。現代は MTA-STS / DANE で「強制 TLS」を宣言するのが推奨
465/tcp MUA → MSA(SMTPS) 常時 TLS(Implicit ) 古い「Submission over TLS」。RFC 8314 で公式に再認可された
587/tcp MUA → MSA(Submission) STARTTLS で TLS 化が標準 現代の 標準的な投函ポート 。SMTP-AUTH(認証)が必須
こぼれ話: 465 は一度 IANA から「使うな」と言われた歴史があり、その後 587 + STARTTLS が推されて主流になりました。しかし STARTTLS のダウングレード攻撃や運用上の煩雑さから、近年(RFC 8314, 2018) 465(Implicit) を再評価 し「Implicit と Submission(587) を併用するのが望ましい」とされています。一周回って Implicit が見直されたわけです。
POP3 / IMAP の TLS 版
プロトコル 平文ポート Implicit TLS ポート STARTTLS
POP3 110/tcp 995/tcp(POP3S) 110 上で STLS コマンドで昇格可能(あまり使われない)
IMAP 143/tcp 993/tcp(IMAPS) 143 上で STARTTLS コマンドで昇格
運用の現実: 大手プロバイダ(Gmail、Outlook、iCloud など)は もはや平文 110 / 143 を完全に閉じている ことが多く、実質的に POP3S(995) または IMAPS(993) しか使えません。さらに多くは OAuth2 認証 (後述)を要求します。「telnet で 110 番を叩いて学ぶ」のはローカル / 自前サーバ限定と思っておくのが安全。
送信元ドメイン認証 ─ SPF / DKIM / DMARC
SMTP-AUTH は 「投函してきた利用者が正規ユーザか」 を見る仕組みです。一方、受信側に届いたメールが 名乗っているドメインから本当に来たのか を見るには、SPF / DKIM / DMARC を使います。たとえば「example.com から来た」と見えるメールが、実際には別の場所から勝手に送られていないかを確認するための仕組みです。
仕組み 見るもの DNSに置く情報 得意なこと
SPF 送ってきたサーバの IP そのドメインが許可する送信元 IP 範囲 「このIPから出るはずか」を確認
DKIM メールについた電子署名 署名を検証する公開鍵 本文や主要ヘッダの改ざん検知
DMARC SPF/DKIM の結果と From: の整合 失敗時の扱い方 隔離・拒否などのポリシー適用
POINT
SPF / DKIM / DMARC は 本文が安全か を判定するウイルス検査ではありません。主な役割は、送信元ドメインのなりすましを見抜きやすくする ことです。
受信側MTAは何を順番に見るか
SPF: SMTP 接続元 IP が、MAIL FROM のドメインで許可された送信元かを DNS の TXT レコードで確認する。
DKIM: メールに付いた DKIM-Signature を読み、DNS で公開鍵を取得して署名を検証する。
DMARC: 利用者に見える From: のドメインと、SPF/DKIM の合格ドメインが整合しているかを見る。
最終処置: 送信ドメインのポリシーに従い、通常配送・隔離・拒否などを決める。
もっと詳しく: DMARC のポリシー
DMARC レコードは DNS の _dmarc.example.com の TXT として公開されます。代表的なポリシーは次の3つです。
p=none : 何もせず通すが、レポートだけ集める。導入初期に使う。
p=quarantine : 失敗メールを迷惑メール扱いなどに隔離する。
p=reject : 失敗メールを受信時点で拒否する。
DMARC は SPF または DKIM のどちらかが通り、かつ利用者に見える From: のドメインと整合していることを重視します。単に SPF だけ、DKIM だけを見るより、利用者が見る差出人表示と結びつけて判断できる点が重要です。
FTPS ─ FTP に TLS を被せた拡張
第15回 FTP で学んだ平文 FTP に、TLS を追加したのが
FTPS (FTP over TLS / SSL)です。FTP の
制御接続(21) と
データ接続(20 / 動的) の両方を TLS で覆います。HTTPS のように専用ポートを用意した
暗黙 モードと、SMTP のように途中から昇格する
明示 モードの2種類があります。
なぜ平文 FTP をそのまま使わないのか
FTP は RFC 959 の時代の設計で、ユーザ名・パスワード・ファイル本体を 暗号化せずに 流します。学習用に telnet で観察しやすい反面、インターネット越しの本番運用では危険です。
平文 FTP の主な問題:
パスワードが見える ─ PASS p@ssw0rd がそのままネットワーク上を流れる
ファイル本体も見える ─ 個人情報や業務ファイルを送ると、経路上で読まれる可能性がある
改ざんに弱い ─ 中間者がファイルを書き換えても、FTP 自体には検出する仕組みがない
相手確認が弱い ─ TLS のサーバ証明書のように「本物のサーバか」を確認する標準的な仕組みがない
整理: FTP の 制御接続とデータ接続 という設計はプロトコルとして重要ですが、安全に使う話は別です。現代では「FTP の考え方を知る」と「平文 FTP を運用で使う」は分けて考えます。
明示的(Explicit、FTPES)
従来通り 21/tcp の平文 で接続を始める
クライアントが AUTH TLS コマンドで「TLS にしてください」と要求
そこから TLS ハンドシェイクに切り替え、以降は暗号化
SMTP の STARTTLS と同じ思想
暗黙的(Implicit、FTPIS)
専用ポート 990/tcp(制御)・989/tcp(データ) を使い、最初から TLS
歴史的経緯で残るが、新規導入は明示モードを推奨する流れ
HTTPS(443)が最初から TLS なのと同じ発想
FTPS の難しさ ─ 制御接続が暗号化されると NAT/FW が悩む
平文 FTP では、NAT 機器が ALG(Application Layer Gateway) として制御接続の PORT や PASV コマンドを 盗み見て データ接続のポートを事前に開けてやる、という運用がありました。FTPS では制御接続も暗号化されるので、ALG が中身を読めなくなる ── 結果、Active モードのデータ接続が NAT 越しでうまく中継されない問題が起きやすくなります。
運用上の解決策はだいたい1つに収束していて、「Passive モード固定」+「サーバ側で動的ポート範囲を狭く明示開放」+「クライアント側 NAT は問題なし」 。それでも FTP は徐々に新規採用が減り、後述の SFTP や HTTPS 配信に置き換わっていきました。
SFTP / SCP ─ 名前は似ているが 系統が違う
最大の混同ポイントを正面から取り扱います。SFTP は FTPS と まったく別物 です。FTP に TLS を被せたものではなく、SSH の上に新しく設計されたファイル転送プロトコル です。
POINT
名前が似ているので混同しやすい3兄弟の正体:
FTPS (FTP over TLS) = FTP + TLS。21 / 990 番。
第15回 の FTP コマンドそのまま
SFTP (SSH File Transfer Protocol) = SSH 上の
独自プロトコル 。22 番。FTP とは無関係
SCP (Secure Copy) = SSH 上の
シンプルなコピーコマンド 。22 番。プロトコルとしては素朴
3者の比較
SFTP FTPS SCP
正式名称 SSH File Transfer Protocol FTP over TLS / SSL Secure Copy Protocol
下位プロトコル SSH(TCP 22) FTP + TLS SSH(TCP 22)
ポート 22/tcp (SSH と共用)21/tcp (明示) / 990/tcp (暗黙)22/tcp (SSH と共用)
FTP との関係 名前が似ているだけで 無関係 FTP の 拡張 (同じコマンド + TLS) 無関係
認証 SSH の鍵認証 / パスワード サーバ証明書(X.509) + ユーザ ID/パスワード SSH の鍵認証 / パスワード
NAT 越え 1本の TCP で完結 ─ 容易 制御は TLS で暗号化 ─ ALG が効かず工夫が要る 1本の TCP で完結 ─ 容易
使用ツール OpenSSH の sftp 、WinSCP、FileZilla FileZilla(FTPS モード)、curl、WinSCP OpenSSH の scp
現代の主流? ★ 最有力(運用が楽) FTP 資産を残したい組織で利用 OpenSSH では将来 deprecate の方針 [要確認]、SFTP に移行推奨
なぜ SFTP は FTPS より楽か
FTP のような 制御 + データの二本立てが不要 ── 1本の SSH コネクションで完結する
NAT 越えが普通の SSH と同じ感覚で済む
SSH 鍵認証が使える ── パスワードを送らずに済む
サーバ運用が楽 ── sshd を立てるだけで動く(専用デーモン不要)
Q. SFTP と FTPS、どちらを選ぶべきか?
解答を見る
新規構築なら SFTP がほぼ唯一の正解 。理由は (1) NAT 越えで詰まらない、(2) SSH 鍵で認証管理が楽、(3) サーバ側も sshd 1本でよく追加デーモンがいらない、(4) クライアントも標準 OpenSSH / WinSCP で済む。FTPS は「既存の FTP インフラを残しつつ暗号化したい」という限定的シナリオでのみ意味がある、レガシー対応用の選択肢です。
現代のファイル転送は何を選ぶか
「ファイルを送る」と言っても、配布・同期・バックアップ・クラウド連携では向いた方式が違います。生の FTP を新規に選ぶ場面はかなり少なく、次のように目的別に選ぶのが現代的です。
シナリオ 候補 理由
不特定多数に配布 HTTPS + CDN ブラウザだけで取得でき、CDN で世界に分散できる
サーバ管理者が手元から同期 SFTP / rsync over SSH 1本の SSH 接続で完結し、鍵認証と暗号化を使える
差分バックアップ・大量同期 rsync over SSH 前回との差分だけを送り、通信量を抑えられる
クラウドネイティブなアプリ S3 / GCS API など HTTPS ベースで、IAM・署名付き URL・監査ログと組み合わせやすい
既存 FTP 資産を残す必要がある FTPS FTP のコマンド体系を保ったまま TLS 化できるが、NAT/FW 設定は重くなりやすい
つながる知識: 1980年代の FTP は「制御とデータを分ける」発想、1990年代以降の HTTP は「1本の接続にまとめる」発想、SSH 系の SFTP/rsync は「暗号化された1本のトンネルに入れる」発想です。プロトコルの形は、その時代のネットワーク事情をかなり正直に映します。
openssl s_client で TLS の中を覗く ─ telnet の HTTPS 版
第16回 telnet で覗くアプリ層プロトコル で「telnet では TLS 越しは見えない」と書いた理由は、TCP の上が暗号化されているから。これを「
TLS だけ自動でやってもらって、その中の平文 TCP を手打ち 」できるツールが
openssl s_client です。OpenSSL に同梱されており、macOS / Linux / Git Bash / WSL のどこでも使えます。
基本形
# HTTPS(443)に接続して TLS の中を平文として開く
$ openssl s_client -crlf -connect example.com:443
(TLS ハンドシェイクのログがズラっと流れた後…)
GET / HTTP/1.1
Host: example.com
(空行)
HTTP/1.1 200 OK
...
-crlf オプションは「Enter キーを CRLF に変換」するためのもの。telnet と同じ感覚で HTTP を打てます。
STARTTLS 版(SMTP / IMAP / POP3)
STARTTLS で昇格するタイプのサーバには、-starttls オプションで「最初の STARTTLS までを openssl が代行」してくれます。
# SMTP Submission(587)を STARTTLS で TLS 化して開く
$ openssl s_client -crlf -starttls smtp -connect smtp.example.com:587
# IMAP の STARTTLS
$ openssl s_client -crlf -starttls imap -connect imap.example.com:143
# POP3 の STLS
$ openssl s_client -crlf -starttls pop3 -connect pop.example.com:110
# FTP の AUTH TLS(明示モード)
$ openssl s_client -crlf -starttls ftp -connect ftp.example.com:21
証明書を確認する用途にも便利
# 期限・SAN・発行者などを取り出す
$ openssl s_client -connect example.com:443 -servername example.com </dev/null \
| openssl x509 -text -noout
サーバ証明書のフィールドが読めるので、X.509 の中身(第25回 で学んだ Subject、SAN、Issuer、有効期限) を実物で確認できます。本物の運用調査でもよく使う手筋です。
SNI 注意: 同じ IP に複数のサイトが共存する現代では、-servername で SNI(Server Name Indication) を明示しないと違うサイトの証明書が返ってくることがあります。HTTPS の Host ヘッダと同じ理屈で、TLS にも「どのサイト宛て?」のヒントを乗せる必要がある。
現代の運用 ─ TLS だけでは守れない領域を埋める
TLS で「経路上の暗号化と認証」は固められましたが、現代の脅威モデルにはまだ穴があります。それを埋めるための追加プロトコル / ヘッダ / 規格が、最近の標準化の主戦場です。
HSTS(HTTP Strict Transport Security)
サーバが応答ヘッダで Strict-Transport-Security: max-age=31536000; includeSubDomains と宣言すると、ブラウザは 「このドメインは今後1年間、HTTP を試さず必ず HTTPS で接続する」 と覚えます。STRIPTLS 攻撃やリダイレクト経路の盗聴を封じる効果があります。Chrome / Firefox には HSTS preload list という「最初から HSTS 扱いするドメイン名簿」もあり、Google / GitHub などはここに登録済み。
MTA-STS / DANE(メール送信の TLS 強制)
メール MTA 間(25/tcp + STARTTLS)は、相手サーバが STARTTLS に対応していなければ 平文に落ちる ── これが昔から悩みでした。MTA-STS (RFC 8461)はサーバ側が DNS と HTTPS で「私の MX は必ず TLS で来てね」と宣言する仕組みで、対応 MTA は STARTTLS 失敗時に 送信そのものを中止 します。DANE (DNSSEC + TLSA レコード)も同種の TLS 強制策ですが、DNSSEC が前提となるため普及は MTA-STS よりやや遅め。
OAuth2(SMTP/IMAP の認証強化)
大手メールプロバイダ(Gmail、Outlook 365 など)は、SMTP-AUTH や IMAP のパスワード認証から OAuth2 アクセストークン 認証への移行を進めています。背景は (1) パスワードを各クライアントに保存させたくない、(2) 段階的なアクセス権限管理(スコープ)、(3) 多要素認証(MFA)との統合容易性。telnet で対話できる SMTP-AUTH PLAIN とは別世界の認証フローになっています。
HTTPS Everywhere の文化
2010 年代後半から、ブラウザベンダ・SEO・Let's Encrypt(無料証明書) の3つが噛み合って、「個人サイトでも HTTPS が当たり前」 という空気が一気に作られました。Mozilla の HTTPS-Only Mode 、Chrome の 「HTTPS にアップグレードを試行」 設定など、ブラウザは 平文への回帰を能動的に阻止 する方向に進化しています。
まとめと用語チェック
SUMMARY
1. アプリ層の古典プロトコルは そのままでは平文 。盗聴・改ざん・なりすましの脅威に弱い
2. TLS を被せる方法は2つ:Implicit TLS (専用ポートで最初から)/ STARTTLS (平文セッションを途中から昇格)
3. HTTPS(443)は Implicit 一択で綺麗にまとまった成功例。HTTP/2・HTTP/3 はほぼ TLS 必須
4. メール系は両方並存:SMTPS(465 / Implicit)・SMTP+STARTTLS(587)、POP3S(995 / Implicit)、IMAPS(993 / Implicit)
5. メールの送信元ドメイン認証は SPF / DKIM / DMARC 。TLS は経路、SPF/DKIM/DMARC は「名乗っているドメインらしさ」を見る
6. FTPS は FTP + TLS(明示=21、暗黙=990)。NAT/FW との相性問題があり新規導入は減少
7. SFTP は FTPS と別物 。SSH ファミリーで 22 番、1本接続で完結。新規構築の最有力
8. ファイル配布は HTTPS + CDN、同期やバックアップは SFTP / rsync over SSH、クラウド連携はストレージ API を選ぶのが現代的
9. openssl s_client は telnet の HTTPS 版。-starttls オプションで昇格型にも対応
10. TLS だけでは塞げない領域(ダウングレード攻撃・MTA 間平文・パスワード)は HSTS / MTA-STS / DANE / OAuth2 で補強する流れ
用語チェック
用語 1行説明
Implicit TLS 専用ポートで最初から TLS。例:HTTPS 443、SMTPS 465、IMAPS 993、POP3S 995、FTPS 暗黙 990
STARTTLS 平文セッションを途中で TLS に昇格させるコマンド。例:SMTP 587、IMAP 143、FTP 21
HTTPS HTTP over TLS。443/tcp。HTTP/2・HTTP/3 ではほぼ前提
SMTPS / Submission SMTPS=465(Implicit)、Submission=587(STARTTLS)。両方並存
POP3S / IMAPS 995 / 993。Implicit TLS の POP3 / IMAP
SPF 送信元 IP が、そのドメインから送ってよいサーバかを DNS の TXT レコードで確認する仕組み
DKIM メールについた電子署名を DNS 上の公開鍵で検証し、本文や主要ヘッダの改ざんを見つける仕組み
DMARC SPF/DKIM の結果と利用者に見える From: の整合を見て、失敗時の扱い方を決める仕組み
FTPS(明示・暗黙) 明示=21 で AUTH TLS、暗黙=990 で最初から TLS
SFTP SSH File Transfer Protocol。22/tcp、SSH 上の独自プロトコル。FTPS とは別物
SCP SSH 上の素朴なコピーコマンド。22/tcp。OpenSSH では SFTP 経由への移行推奨
rsync over SSH 差分転送を SSH で暗号化して行う同期方式。バックアップやサイトミラーで使いやすい
HTTPS + CDN 不特定多数へのファイル配布で主流。ブラウザで取得でき、CDN で負荷分散できる
openssl s_client TLS の中の平文を手打ちで観察できる CLI。telnet の TLS 版
SNI TLS ハンドシェイクで「どのサイト宛て?」をサーバに伝える拡張。HTTPS 仮想ホストで必須
HSTS 「このドメインは今後 HTTPS のみ」と宣言する応答ヘッダ。STRIPTLS 攻撃を封じる
MTA-STS / DANE メール MTA 間の STARTTLS を強制する仕組み(DNS 経由で宣言)
OAuth2(メール) パスワードでなくアクセストークンで SMTP/IMAP を認証する現代型方式
NEXT: 次回(第27回)は同じセキュリティ系の応用、
ファイアウォール / IDS / IPS / WAF を扱います。「経路上で暗号化されている」TLS と、「どのフローを通すか」を判定するファイアウォールは、現代では協調しながらネットワークを守ります。
第27回 ファイアウォール へ。
確認問題
問1. Implicit TLS と STARTTLS の違いとして最も適切なものを1つ選べ。
次の選択肢から最も適切なものを選択してください。
A. Implicit TLS は TCP 不要で、STARTTLS は TCP の上で動く
B. Implicit TLS は専用ポートで最初から TLS、STARTTLS は平文ポートで接続後にコマンドで TLS に昇格する
C. Implicit TLS は HTTP 専用、STARTTLS は SMTP 専用
D. どちらも UDP の上で動く新しい仕組み
正解:B
Implicit は HTTPS(443)・SMTPS(465)・IMAPS(993)・POP3S(995)・FTPS 暗黙(990) のように 専用ポート + 最初から TLS 。STARTTLS は SMTP Submission(587)・IMAP(143)・POP3(110)・FTP(21) のように 平文ポートで接続後にコマンドで TLS に昇格 。A・C・D は明確に誤り。
問2. SFTP と FTPS の関係として最も適切なものを選べ。
次の選択肢から最も適切なものを選択してください。
A. 同じプロトコルの別名で、ポートも 21/tcp で共通
B. SFTP は FTPS の旧称で、現代は使われない
C. どちらも FTP に TLS を被せた拡張だが、ポートが違う
D. 別物。SFTP は SSH 上の独自プロトコル(22/tcp)、FTPS は FTP に TLS を被せた拡張(21 / 990 番)
正解:D
最大の混同ポイント。SFTP は SSH(22/tcp) の上で動く 新しい設計のファイル転送プロトコル で、FTP コマンド体系とは無関係。FTPS は 従来 FTP のコマンド体系をそのまま残し、TLS で覆う 方式。両者は「セキュアなファイル転送」という目的が同じなだけで、プロトコル系統も標準化団体も別。
問3. SMTP の3つのポート(25 / 465 / 587)に関する記述として最も適切なものを選べ。
次の選択肢から最も適切なものを選択してください。
A. 25 は MTA 間中継、465 は Implicit TLS の Submission、587 は STARTTLS で TLS 化する Submission
B. 3 つとも MTA 間中継用で、暗号化の有無だけが違う
C. 25 と 587 は廃止され、現代は 465 のみが使われる
D. 587 は POP3、465 は IMAP のセキュア版である
正解:A
25 : MTA ↔ MTA(サーバ間)、家庭からは OP25B でブロック、STARTTLS は日和見(オプション)。465 : MUA → MSA(SMTPS)、Implicit TLS。587 : MUA → MSA(Submission)、STARTTLS で TLS 化が標準。RFC 8314(2018) 以降、465 と 587 は両方並走推奨。
問4. openssl s_client -starttls smtp -connect host:587 はどんな動作をするか。
次の選択肢から最も適切なものを選択してください。
A. 587 番ポートに最初から TLS で接続し、TLS 上で SMTP コマンドを打てるようにする
B. SMTP のメールを開封したかどうかをサーバに問い合わせる
C. 587 番ポートに 平文で接続し、EHLO 〜 STARTTLS までを openssl が代行 し、その後 TLS 越しに SMTP コマンドを打てるようにする
D. SMTP サーバの証明書を破棄する
正解:C
587 番は STARTTLS で昇格するタイプのポート。-starttls smtp を付けると openssl が「平文接続 → EHLO → STARTTLS コマンド送信 → TLS ハンドシェイク」までを自動代行し、ユーザは TLS 確立後の暗号化セッション内 で SMTP コマンドを手打ちできる。Implicit ポート(465 / 993 / 995)に対しては -starttls 不要で -connect だけで OK。
問5. HSTS(HTTP Strict Transport Security)の役割として最も適切なものを選べ。
次の選択肢から最も適切なものを選択してください。
A. HTTPS の TLS ハンドシェイク回数を減らすキャッシュ機構
B. サーバが「このドメインは今後一定期間 HTTPS のみで接続せよ」とブラウザに宣言し、平文 HTTP への回帰や STRIPTLS 攻撃を封じる
C. 証明書の失効情報をクライアントが取得するためのプロトコル
D. HTTP/2 を必ず使わせるためのオプション
正解:B
HSTS はサーバが応答ヘッダ Strict-Transport-Security: max-age=...; includeSubDomains で宣言し、ブラウザがそれを覚えて 「以後このドメインは HTTPS でしかアクセスしない」 ことを強制する仕組み。STARTTLS のダウングレード(STRIPTLS)や、ブックマークされた http:// URL からの平文接続を防ぐ。