Q.サーバー配信でエラー「FTP failed to start tls: Proceed with negotiation.」が発生する
以下のエラーが発生してサーバー配信機能を利用できません。
FTPサーバー '(配信先名)' への接続中にエラーが発生しました: FTP failed to start tls: Proceed with negotiation.
A.
FTPS による暗号通信に失敗した際に発生することがあります。
暗号通信ができない主な原因と解決策は以下のとおりです。
配信先の FTP サーバーにパブリック証明書が設定されていない場合
SSL 通信では通信内容が暗号化されますが、通常は、通信先サーバーの正当性のチェックが通信開始前におこなわれます。
正当性のチェックには SSL 証明書が用いられ、公的な第三者機関として信頼される認証局から発行されたパブリック証明書が通信先に設定されている状態であれば、正当性のチェックをパスし、暗号化通信が開始されます。
個人や組織で独自に構築した一般に信頼されないプライベート認証局で発行した自己署名証明書を通信先に設定したり、証明書自体を通信先に設定していない場合には、正当性のチェックがパスできず、暗号化通信の開始に失敗します。
自己署名証明書は、一時的な動作テスト目的や、組織内の閉鎖的なネットワーク内で正当性のチェックを不要とするような限定的な場面でのみ使用すべきであり、インターネットを介して利用する Movable Type クラウド版のサーバー配信先で使用することはおすすめできません。
Movable Type Advanced を用いて閉鎖的なネットワーク内でサーバー配信をおこなう場合であっても、配信設定で SSL 設定を有効にした場合には、正当性のチェックがおこなわれます。
正当性のチェックを不要と判断した閉鎖的なネットワークなどでサーバー配信を使用する場合には、配信設定の SSL 設定は有効にしない状態でご利用ください。
Movable Type クラウド版でのサーバー配信など、不特定多数が利用するインターネットなどのネットワークを経由する場合、特別な事情がない限りは、配信先の FTP サーバーにはパブリック証明書をご利用ください。
もし特別な事情によりパブリック証明書を設定できない場合、配信先の FTP サーバーで SSL でない FTP 通信が可能であれば、配信設定の SSL 設定は有効にしない状態でご利用ください。
パブリック証明書を設定できず、且つ、FTP 通信が許可されていない(SSL を伴う FTPS 通信のみ許可されている)FTP サーバーに対してサーバー配信をおこなう必要がある場合、パブリック証明書を設定するまでの一時的な対処として、環境変数「FTPSSSLVerifyNone」を設定してください。
FTPSSSLVerifyNone 1
を設定することで、SSL 証明書による正当性のチェックがスキップされます。
FTPSSSLVerifyNone による正当性のチェック回避はあくまで一時的な対応となります。SSL 通信の使用はセキュリティ向上が目的であり、正当性のチェックをスキップすることはセキュリティリスクの温床となる可能性があります。継続的に SSL 通信を必要とする場合には、できるだけ速やかにパブリック証明書の取得と配信先への設定をおこなってください。
配信元と配信先の双方で利用可能な共通の暗号スイートが存在しない
配信先の FTP サーバーにパブリック証明書が設定されている状態であっても、暗号化通信で用いられる暗号スイートが、配信元と配信先で共通の暗号スイートが存在しない場合には暗号化通信に失敗します。
暗号スイートとは、暗号化通信の際、暗号化処理に使用される暗号アルゴリズムのセット(組み合わせ)を指します。
暗号通信の際には、通信元と通信先でそれぞれ使用可能な暗号スイートのうち、共通のものが使用されます。
双方で共通の暗号スイートが存在しない場合、暗号化通信ができず、接続に失敗します。
配信元のサーバー OS と、配信先の FTP サーバーの双方において、使用可能な暗号スイートを確認し、双方で共通の暗号スイートがあるかご確認ください。
共通の暗号スイートが存在しない場合、共通の暗号スイートが使用できるようサーバーを調整し、再度サーバー配信をお試しください。
以下、配信先の FTP サーバーで使用可能な暗号スイートが古く、配信元の新しい暗号スイートが使用できない場合の対処方法の例となります。
- 接続先の FTP サーバーの暗号スイートを変更する(FTP サーバーが vsftpd であれば、vsftpd.conf の
ssl_ciphers
パラメーターの見直し。例:ssl_ciphers=HIGH
) - 接続先の FTP サーバーにあった暗号スイートを環境変数
FTPSOptions
でSSL_cipher_list
を指定する(例:SSL_cipher_list=AES128
)
上記ケースでは "接続先の FTP サーバーの暗号スイートを変更する" による対応をおすすめいたします。環境変数「FTPSOptions」による対応は暗号強度の低い暗号スイートに合わせることになるため、何らかの事情により FTP サーバー側の設定変更ができない場合にのみおこなってください。
以下、FTP サーバーとして vsftpd 3.0.5 を使用し、Movable Type クラウド版からサーバー配信をおこなった場合の動作を例としてご案内いたします。
vsftpd 3.0.5 は、デフォルトでは AES128-SHA:DES-CBC3-SHA が暗号スイートとして使用されます。
FTP サーバー側の vsftpd.conf 内の ssl_ciphers で暗号スイートを指定していない場合、配信元のサーバー OS でも AES128-SHA:DES-CBC3-SHA が使用可能な状態である必要があります。
Movable Type クラウド版で使用している Rocky Linux 9 のデフォルトでは AES128-SHA:DES-CBC3-SHA が使用できないため、配信元と配信先で共通の暗号スイートが存在せず、配信エラーが発生します。
暗号スイート AES128-SHA:DES-CBC3-SHA は非常に古く、暗号強度が低いため、Rocky Linux 9 のデフォルトでは採用されておりません。
旧 Movable Type クラウド版では、サーバー OS として CentOS 7 を使用しており、CentOS 7 ではデフォルトの暗号スイートに AES128-SHA:DES-CBC3-SHA が含まれております。
そのため、vsftpd 3.0.5 で ssl_ciphers の指定をおこなっていない場合、旧 Movable Type クラウド版(CentOS 7)ではサーバー配信が動作し、現行の Movable Type クラウド版(Rocky Linux 9)ではサーバー配信が失敗します。
以下の Q&A に、現行の Movable Type クラウド版でサーバー配信に失敗した場合の対処方法が記載されております。
上記ページには対象方法が 2 つありますが、Movable Type クラウド版側の設定により暗号強度の低い暗号スイートを使用する方法よりも、FTP サーバー側の設定を変更して暗号強度の高い暗号スイートを使用する方法をおすすめいたします。