FTP1.概要2.原因3.サーバー側でなおす4.クライアント側でなおす5.KeepAliveについて1.概要FTPSでファイル転送のシステムを構築している時にクライアントアプリ側【FtpWebRequest】で下記のエラーが発生しました。page※サーバーは【CentOS】で【vsftpd】で構築しています。この内容を直訳するとSSL接続に失敗しました。manページのrequire_ssl_reuseオプションを参照ここでエラー内容にある【vsftpd】の【require_ssl_reuse】は何かというのを調べてみるとrequire_ssl_reuse詳細YesコントロールコネクションでSSL認証し、データコネクションで認証されたSSLセッションを再利用する。NoコントロールコネクションでSSL認証し、データコネクションでは認証を行わない。デフォルトでは【require_ssl_reuse=Yes】の状態なのでデータコネクションでSSLセッションを再利用しているわけですがここがうまくいってないのだと思います。原因はFTPSクライアントがコントロールコネクションで認証されたSSLセッションをデータコネクションで再利用できないことにあります。今回使用したFTPSクライアントですが【FtpWebRequest】クラスを使ったものでした。www.chuken-engineer.com解決するためにどうしたらいいか検証してみます。3.サーバー側でなおす【require_ssl_reuse=No】にしたらどうなるのか?実際にやってみると問題なくFTPSでファイル転送が可能になりました。この場合、データコネクションではSSL認証が行われていないわけですからセキュリティーが若干落ちてしまいます。構築するシステムの状況によりますが、この方法で解決するのもありかもしれません。4.クライアント側でなおすそもそもの原因がクライアント側にあるわけですからクライアント側を修正するのが筋だと思います。【FtpWebRequest】をやめて【FluentFTP】で試してみます。www.chuken-engineer.com結果としてはどちらも同じエラーを返されてしまいました。5.KeepAliveについて解決方法がわからず色々といじっていると【FtpWebRequest.KeepAlive】プロパティが目につきました。値を取得または設定します。関係ないと思ったのですがとりあえず現状の【false】から【true】へ変更してみます。すると問題なくデータ転送が行えてしまいました。これを【true】にする使い方としては一度の接続で複数のコマンドを実行する時という認識でした。関係ないと思うのですが結果としてファイル転送が行われたのはどういう原理からなのでしょうか。調べる時間もないので今回はこの辺で。時間が空いたら調べてみようかと思います。【C#.net】USBメモリの挿入を検知して、取り外しまで行う。(2)月別アーカイブこのサイトについてプライバシーポリシーリンクお問い合わせスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。