lftp証明書検証エラーを回避する方法


46

ペリカンのブログを機能させようとしています。lftpを使用して実際のブログをサーバーに転送しますが、常にエラーが発生します。

mirror: Fatal error: Certificate verification: subjectAltName does not match ‘blogname.com’

lftpはSSLをチェックしており、Pelicanのクイックセットアップでは、FTPにSSLがないことを含めるのを忘れていました。


これはPelicanのMakefileのコードです:

ftp_upload: $(OUTPUTDIR)/index.html
lftp ftp://$(FTP_USER)@$(FTP_HOST) -e "mirror -R $(OUTPUTDIR) $(FTP_TARGET_DIR) ; quit"

ターミナルで次のようにレンダリングします:

    lftp ftp://username@blogname.com -e "mirror -R /Volumes/HD/Users/me/Test/output /myblog_directory ; quit"

これまで管理してきたのは、Makefileを次のように変更してSSLチェックを拒否することです。

lftp ftp://$(FTP_USER)@$(FTP_HOST) -e "set ftp:ssl-allow no" "mirror -R $(OUTPUTDIR) $(FTP_TARGET_DIR) ; quit"

実装が正しくないため、正しくログインします(lftp username@myblog.com:~>)が、1行の機能が動作しなくなり、ミラーコマンドを手動で入力する必要があります。

mirror -R /Volumes/HD/Users/me/Test/output/ /myblog_directory

これはエラーとタイムアウトなしで機能します。問題は、1つのライナーでこれを行う方法です。


さらに、私は試しました:

  • set ssl:verify-certificate/ftp.myblog.com no
  • lftpで証明書の検証を無効にする次のトリック

    $ cat〜/ .lftp / rc set ssl:verify-certificate no

ただし、lftpディレクトリに「rc」フォルダがないようです。したがって、このプロンプトは機能しません。


1
~/.lftprc ファイルです
Mausy5043

回答:


42

マンページから:

-c commands指定されたコマンドを
実行して終了します。コマンドはセミコロン(;)、AND(&&)またはOR(||)で区切ることができます。シェルでコマンド引数を適切に引用することを忘れないでください。このオプションは、他の引数なしで単独で使用する必要があります。

したがって、セミコロンで区切られた単一の引数としてコマンドを指定する必要があります。

lftp ftp://$(FTP_USER)@$(FTP_HOST) -e "set ftp:ssl-allow no; mirror -R $(OUTPUTDIR) $(FTP_TARGET_DIR) ; quit"

実際にquitコマンドを省略して、の-c代わりに使用できます-e


それは素晴らしいことです。トンありがとう。私よりも経験のある人がすぐに失敗を見つけてくれることを期待していました(-終了を除外する-cの提案も試しましたが、これはうまくいきませんでした。とにかく幸せです)。
パトリック

34

私のlftpには(Fedora RPM)でコンパイルされたsslサポートがありますが、同様の問題がありました。 ssl:verify-certificate false私のためにトリックをしました。


11
これに基づいてset ssl:verify-certificate false、私~/.lftprcの問題を解決してくれました。
ニコラスラウル

5
…これはSSLを使用するポイントを無効にしますが、lftpは提示された証明書を喜んで受け入れ、M2M攻撃に対して脆弱になります。
スペクトル

1
証明書が適切に検証されない場合、考えられる原因は、lftpがシステムのCA証明書を見つけられないことです。修正については、この回答を参照してください。
-ingomueller.net

19

echo "set ssl:verify-certificate no" >> ~/.lftp/rc

証明書を確認したくない場合は問題を解決します


2
これにより、依然としてSSL証明書の検証が無効になり、中間者攻撃が可能になります。より良い修正については、この回答を参照してください。
ingomueller.net

3
set ssl:verify-certificate no常に無効にするよりも、現在のセッションの一時を無効にするためにlftpシェルで実行する方が良いでしょう。ソリューションについてはまだ+1。
akostadinov

8

ssl:verfy-certificate false 私のために動作しませんでした、「データ接続を行う」ときにタイムアウトエラーが発生していました。

ファイルに追加することで、これらの指示に従いました。set ftp:ssl-allow false~/.lftprc


3
コマンドを実行したときに、正しいスペルをしましたか?SSL:検証・証明書の虚偽
マルコム・マードック

5

さらに、私は試しました:

  • ssl:verify-certificate / ftp.myblog.comを設定します
  • この lftpので無効証明書の検証にトリック:

$ cat〜/ .lftp / rc set ssl:verify-certificate no

使用してみてくださいset ftp:ssl-allow no。それは私にとって魅力のように働いた。


1
これが最も適切な選択です。可能な場合は証明書の検証を使用するのが合理的であり、グローバルオプションを設定することにより、証明書の検証を試行しないため、グローバル設定は不適切な選択です。スクリプトファイルlftp -f <script>を使用して、このコマンドをopenコマンドの前に配置できます。
kmcguire

set ssl:verify-certificate noトランザクションが保護されたままであるためだと思います。set ftp:ssl-allow no平文を通信します
michalzuber

4

私も同様のSSL証明書検証エラーに直面していました。verify-certificateを 'no'に設定するとうまくいきました。

例:

lftp -c 'set ftps:initial-prot ""; ftp:ssl-forceをtrueに設定します。ftp:ssl-protect-dataをtrueに設定します。ssl:verify-certificate noを設定します。open -u Usename、Password 208.82.204.46; uploadfilenameを入れてください; '


3

私はマニュアルページを読んで解決策を見つけました。ファイルを作成

~/.lftp/rc

次の行を追加します:

set ssl:check-hostname false;

1

lftpコマンドが必要です。 set ftp:ssl-allow no;

次を選択した直後にコマンドを実行できます。

lftp www.yourdomain.com -u username,password -e "set ftp:ssl-allow no;"

またはコマンドをに保存し~/.lftprcます。


0
lftp -u username,password host -e "set ftp:ssl-allow no" 

私のために問題を修正しました

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.