FTPでは、ユーザ名、パスワードが平文(暗号化されていない状態)で送信されるため、第三者に盗聴される危険性があります。FTPSは、FTP の通信を SSL で暗号化してその危険性を回避します。
FTPSには、認証コマンド実行後に暗号化通信を開始する Explicit モードと、サーバ接続開始時点から暗号化通信を開始する Implicitモードあります。IIS Service の場合は、既定では Explicit モードに設定されます。Explicit モードでもセキュリティ上問題はないので、以下はExplicit モードで説明します。Implicit モードは、補足でメモしています。
Explicit (明示的な)モード:サーバに接続した後に FTP クライアントがAUTHコマンドを実行して、使用するプロトコル(SSLまたはTLS)のネゴシエーションをおこない、適合したプロトコルでのハンドシェイク完了後に暗号化された通信がおこなわれる。
Implicit (暗黙の)モード:サーバに接続した直後にSSLまたはTLSによるハンドシェイクがおこなわれ、すべての通信が暗号化されておこなわれます。
FTP Service では、FTPS を簡単に設定することができます。サーバー証明書(SSL証明書)を作成(入手)して、SSL の設定をするだけです。Explicit モードでは、FTP と同じポートを使用するので、ファイアーウォールの設定については、FTP の場合と同じです。
HTTPS を運用している等で既にサーバー証明書(SSL証明書)を持っている場合は、それを利用しますが、持っていない場合には自己証明書を使うことができます。その発行手順は、以下のとおりです。
1-1-1. IIS マネージャーを起動し、[接続] ウィンドウで、ツリー内のサーバーを選択します。機能選択画面のIISのグループに「サーバー証明書」が表示されるので、それをダブルクリックします。
1-1-2. 右側の「操作」パネルで、「自己署名入り証明書の作成...」をクリックします。
1-1-3. フレンドリ名に適当な名称を入力します。なお、画面の説明の前半部分は関係ないので無視します。
1-1-4. 以上でサーバー証明書が作成できました。
FTPS を動作させるには、SSL の設定を行います。
FTP サイトを新規に作成する場合には、FTP サービス をインストールのメモのうち、2-3. で、「SSL」の項目に「無し」のかわりに、「許可」又は「必要」を選択し、「SSL 証明書」の欄で、1-1. で作成した サーバー証明書を選択するだけです。
作成済の FTP サイトで FTPS を使用できるようにするには、IIS マネージャーで、[接続] ウィンドウで、ツリー内の FTP サイト を選択し、FTPのグループの「FTP の SSL 設定」を使用します。
FTPS を使用するためには、FTP クライアントの設定が必要になります。FileZilla の場合は、Server Type を「FTPES - 明示的な TLS/SSL上のFTP」に設定します。
FTPS で Impplicot モードを使用する場合は、モードを識別するためポート番号(well known ポート) 990 が使用されます。IIS Service 7.5 では、「サイトのバインド」で ポートを 990 に設定すると Impplicot モードで接続できるようになります。クライアント側は、例えばFileZilla では、Server Type を「FTPS - 暗黙の TLS/SSL上のFTP」に設定します。IIS Service 7.5 と FileZilla 3.3.4.1 の組み合わせで試験してみましたが、アクティブモード及びパッシブモードとも問題なく接続することができました。
なお、Implicit モードを使用する場合は、ファイアーウォールで TCPIP の ポート番号 990 を開放する必要があります。Windows ファイアーウォールの場合、Windows 8/7 では、「FTP Server Secure(FTP SSL Traffic-In)」の規則を有効にしてやります。また、Vista では、以下の設定内容の受信の規則を作成して、接続を許可してやります。