FreeBSD の Dropbox-api コマンドが突然メッセージを吐き出すようになってしまった。
*******************************************************************
Using the default of SSL_verify_mode of SSL_VERIFY_NONE for client is depreciated! Please set SSL_verify_mode to SSL_VERIFY_PEER together with SSL_ca_file|SSL_ca_path for verification. If you really don’t want to verify the certificate and keep the connection open to Man-In-The-Middle attacks please set SSL_verify_mode explicitly to SSL_VERIFY_NONE in your application. *******************************************************************
at /usr/local/lib/perl5/site_perl/5.12.4/Furl/HTTP.pm line 577
画面表示を見た時は、「昨日までは無かったのに、何?なぜ?」って気分ですが、ファイル転送自体は実行されているようです。
メッセージを読むと、Man-In-The-Middle アタック の可能性があるので、サーバーとクライアントの間でホスト同士の証明書を交換するか、情報漏洩の可能性を承知で使うために、SSL_VERIFY_NONE を明示的に設定せよ と書いてあるみたいです。
検索してみると Man-In-The-Middleアタックとは、経路途中に置かれたゲートウェイやブリッジがパケットを交換する両者の間に立って偽の証明書を利用して情報を盗んだり改ざんしたりする攻撃のようです。私の使い方では、そもそもHTTPSが不要で、スループット重視のHTTPで十分なパソコン間ファイル移動。サーバーポートがHTTPSなのでHTTPSを使っているだけ。改ざんが発生するならネタになるから見てみたい気もする。どちらかというと、通信切断の方が頻繁に発生しているのでそちらの方が課題だ。
ただし、商用のメッセージ交換のように安全性確保が必要なサービスではメッセージ改ざんの危険性があるなら、peer同士で証明書を交換すべきでしょう。
ファイル交換自体は実行されているようなので無視してもいいのですが、毎回このメッセージを見なくちゃいけないのかと思うとうんざりなので、私はSSL_VERIFY_NONE の方を採用することにします。
dropbox-api を使う前に、SSL_verify_mode=SSL_VERIFY_NONE と環境変数をセットすればいいのかと試してみたけど、全く効果無し。
検索してみたら、perl SMTPプロトコルで、同様の症状が出て、その対策をした情報を見つけることが出来ました。http://foswiki.org/Support/Faq69
今回の場合、「/usr/local/lib/perl5/site_perl/5.12.4/Furl/HTTP.pm line 577 」と場所までわかっているので、このURLの記事を参考にして同様に一行追加してみた。
my $sock = IO::Socket::SSL->new(
PeerHost => $host,
PeerPort => $port,
Timeout => $timeout,
SSL_verify_mode => 0, #メッセージ対策のために追加
) or return (undef, "Cannot create SSL connection: $!");
その後、dropbox-api コマンドを発行してみたところ、上記のメッセージは表示されなくなったので、これで良しとしようと思います。perlモジュールパッケージが更新されて、またメッセージが表示されるようなことがあれば、再度この記事を見て修正を掛けようと思います。
なんと、dropbox-api 開発者の方から、コメントを頂きました。
今回のメモに残した現象が修正されたそうです。
****************************************************************
偶然レビュー頂いているのを発見し、
不具合等修正したのでご連絡させて頂きました。
(中略)
修正内容等はこちらにまとめています!
http://blog.7kai.org/2013/01/dropbox-api-command-proxy/
****************************************************************