lftpを使用してFTPS(SSL)接続し、コマンドを実行すると次のようなエラーが発生しました。
ls: Fatal error: Certificate verification: Not trusted
エラーの内容はSSL証明書が不正であるというものです。
これはlftpクライアント固有の問題で、FTPサーバに正しい証明書が配置されていても発生します。
このエラーの解消方法は2つありますのでそれを今回紹介します。
・SSL証明書の正当性確認を無効にする
・クライアント側で証明書の情報を取得する
まずは1つ目のSSL証明書の正当性確認を無効にする方法です。
lftpでは設定でSSL証明書の正当性確認を無効にすることができます。
lftpの設定はホームディレクトリの直下に「.lftprc」というファイル名で配置することができます。
$ vi .lftprc
下記のようにファイルを作成します。
一番下の行の「ssl:verify-certificate」を「no」に設定するとSSL証明書の正当性を確認しません。
set ftp:ssl-auth TLS set ftp:ssl-force true set ftp:ssl-allow yes set ftp:ssl-protect-list yes set ftp:ssl-protect-data yes set ftp:ssl-protect-fxp yes set ssl:verify-certificate no
2つはクライアント側で証明書の情報を取得する方法です。
localhostで以下を実行します。
$ openssl s_client -showcerts -connect xxxxx.jp:21 -starttls ftp
インフォメーションが標準出力されます。
“—–BEGIN CERTIFICATE—–” から” —–END CERTIFICATE—–“までの鍵の部分をコピーし、ファイルとして保存します。
ここではmycert.crtとし、ホームディレクトリに配置します。
/home/vagrant/.lftprcに鍵ファイルパスを記載する。
中身は次のように記述します。
$ cat /home/vagrant/.lftprc set ftp:ssl-auth TLS set ftp:ssl-force true set ftp:ssl-allow yes set ftp:ssl-protect-list yes set ftp:ssl-protect-data yes set ftp:ssl-protect-fxp yes set ssl:verify-certificate yes set ssl:ca-file "mycert.crt" <--追記
これでエラーが解消されます。
$ lftp -u ftpsecure xxxxx.jp Password: lftp ftpsecure@xxxxx.jp:~> ls drwx------ 2 0 0 16384 Jun 24 15:07 lost+found lftp ftpsecure@xxxxx.jp:~>
同じエラーが表示されていたので,検索してこのページにたどり着きました.
そして,1つ目の方法で無事解決できました.
どうもありがとうございました.m(_ _)m
ちなみに,私は;
https://linux-suomi.net/modules/poco/index.php?content_id=11
を参考にしてlftpをミラーリングアップロードに使用しております.
スクリプトの冒頭に,
こちらに記載されている.lftprcの内容を記載致しました.