2016年01月30日
川俣晶の縁側ソフトウェア技術雑記 total 19046 count

IISサーバにWinSCPとFTPSでファイル転送する場合の罠

Written By: 川俣 晶連絡先

問題 §

 Azure上のVMにWindowsサーバが存在する。

 このサーバにセキュアなftp転送を設定した。

 しかし、クライアント上のWinSCPからFTPSで接続できない。

前提知識 §

  • SFTPとFTPSは別物である。IISがサポートするのはFTPS (紛らわしいが間違えると接続できない)
  • FTPSには証明書が必要だが、AzureのVMには標準で提供されているので新規に作らなくても良い
  • FTPSにはImplicitモード(最初から全て暗号化されている)とExplicitモード(通信開始後にコマンドで暗号化を指定する)が存在する。IISがサポートするのはExplicitモード (2017/11/01追記 Azure上のIISとFTPSでファイル転送する場合の罠参照

解決・IIS側 §

  • ネットを調べると、FTPSのWellknownポートは990と書いてあるが、IISのftpサーバはそのポート番号では接続できない。そもそも、FTPSのポート番号を指定する項目が存在しない。ftpで設定したポート番号で接続したあと、コマンドで暗号化通信を開始するから。デフォルトではポート21をftpと共用する。

解決・WinSCP側 §

  1. セキュア通信する場合であっても、使用するプロトコルにはftpを選ぶ (SFTPは選ばない)
  2. 暗号化は、【明示的なTLS/SSL暗号化】を選び、【暗黙的なTLS/SSL暗号化】は選ばない (前者はExplicitモード、後者はImplicitモードを示すらしいが翻訳が良くなく、分かりにくい)
  3. ポート番号は990ではなく21 (IISが開いて待っているポートは21)

感想 §

「みんな使ってるIISとWinSCPなら安全パイなのだろうと思いきや、そうでもなかった。凄く下らないところで引っかかった」

「分かりにくかったポイントはどこ?」

「証明書まわりかと思いきや、そこはどうでも良かった。問題の1つは、IIS側にFTPSで待っているポート番号の設定がどこにもないこと。問題のもう1つはWinSCP側の【明示的/暗黙的】の用語の意味が分かりにくかったことだ」

「一時は途方に暮れたわけだね」

「しかし、IISはExplicitモードで、Explicitモードはコマンドで暗号化を開始するという情報を得て、やっと分かった。つまり、接続を開始する時点ではftpもFTPSも無いわけで、FTPS固有のポート番号を指定する項目は無くて当たり前だった」

「つまり、Wellknownポートは990という情報そのものが今回は邪魔だったわけだね」

「それはImplicitモードでのみ使うポート番号で、今回は関係なかった」

「もう1つは用語の翻訳だね」

「WinSCPを入れる際、言語に日本語を選ばなければ良かった。今では後悔している。インチキ翻訳はMS製品に限定されることはなく、どこの会社の製品でも、無料のソフトでも、OSSでも存在する」