STARTTLS
概要
STARTTLSとは、通信の暗号化を行なう手法の一つで、通常のプロトコルやポート番号で通信を開始して途中からSSL/TLSによる暗号通信に切り替える方式。また、同方式で切り替えを要求するコマンド名。TLS(Transport Layer Security)および前身のSSL(Secure Socket Layer)はIP通信を暗号化する通信規約(プロトコル)の一つで、IPとHTTPやSMTPなどのアプリケーション層のプロトコルの中間で動作する。プロトコルを選ばず通信全体を暗号化できる。
通常のTLS通信では、特定のポート番号をTLS通信用に割り当て、TLSでの接続を確立した後、アプリケーションプロトコルでの通信を開始する。例えば、通常のHTTP通信ではサーバの80番ポートに接続するが、TLSで保護されたHTTPS通信を行いたい場合、標準では443番ポートに接続する。
一方、STARTTLSでは非TLSでの接続を受け付ける通常のポート番号で通信を開始し、サーバとクライアントの間でSTARTTLSコマンドによるTLSへの切り替え手続き(ネゴシエーション)を行う。当初は暗号化されていない平文で通信し、切り替えが完了するとTLSで暗号化された状態になる。
この方法ではTLS用に別のポート番号を用意する必要がなく、非TLS通信と共用とすることができる。ただし、STARTTLSコマンドによる切り替え手続きはアプリケーションプロトコル上でのやり取りとなるため、サーバとクライアントの双方が各プロトコルのSTARTTLS拡張仕様に対応していなければ利用できない。
プロトコルごとにSTARTTLS手続きを追加する拡張仕様が策定されており、SMTP(RFC 3207)、POP3/IMAP4(RFC 2595)、FTP(RFC 4217)、XMPP(RFC 6120)、LDAP(RFC 4511)、NNTP(RFC 4642)などが対応している。なお、TLSは二者間の通信を暗号化する仕組みであるため、電子メールのように複数のホスト間をバケツリレー式に配送されるシステムでは、相手方より先の経路の暗号化について関知・関与することはできない。