1.エラー内容
C#.netでFTPSクライアントアプリケーションをデバッグ中に下記のエラーが発生しました。
SSPI への呼び出しに失敗しました。内部例外を参照してください。
これはFTPサーバーへ接続する段階で発生しました。SSPIとは何か?
Security Support Provider Interface (SSPI) は、Microsoft Windowsにおいてセキュリティに関する様々な機能を提供するAPIである。
この文面を読むと、どうも暗号化の部分がおかしいようです。アプリケーションは【TLS1.0】の暗号化通信を行うように設定していたのですが
この部分について調べてみることにしました。
2.エラー発生環境
サーバー
OS:CentOS8
FTPサーバー:vsftpd
暗号化プロトコル設定:TLS1.0
クライアント
OS:windows
FTPクラス:FluentFTP
暗号化プロトコル設定:TLS1.0
暗号化プロトコルの設定については【TLS1.0】共通にしているので
何故エラーが発生するのか不明でした。
3.解決方法
とりあえずよくわからないので
クライアント側の暗号化プロトコルを【TLS1.2】に変更してみました。
その結果、問題なく通信が出来てしまいました。
※【TLS1.1】にしてもエラーが発生。
サーバー側の設定にミスがあったのかと思い【vsftpd.conf】を確認してみると
ssl_tlsv1=YES
となっており設定にミスもありませんでした。
4.原因はCentOS8の仕様にあった
【CentOS8】は【TLS1.0】、【TLS1.1】がデフォルトで無効となっているようです。
【TLS1.3】への移行が進んでいる中で【TLS1.0】、【TLS1.1】は使うのはやめようということでしょうか?
とりあえず後で見るとややこしくなるので
【vsftpd.conf】の中身を
ssl_tlsv1.2=YES
に書き換えて本件は終了としました。