パソコン関係のメモと趣味のページ

Pure-FTPd本家のREAD ME.TLSの日本語訳です。機械翻訳を基に自分なりに変更したものです。Virtual Usersに続けてやってしまいました(^_^;) これまたよくわからないまま意訳しているような部分もありますので、あくまで参考程度ということで(^_^;)
しかしここのWikiはなかなか意図通りの書式にならないですね・・・勉強不足かな。点線で囲まれるやつは何?


■SSL/TLS SUPPORT


バージョン1.0.16から、Pure-FTPdはSSL/TLSセキュリティメカニズムを使った制御チャンネルの暗号化を実験的にサポートします。

 この特別なセキュリティレイヤーを使用するとき、ログインとパスワードは生のテキストで送られることはありません。そして、あなたのクライアントから送る他のコマンドもサーバーからの返答も同様です。

 しかしながら、データチャネルはSSL/TLSに影響を受けません。この組合せはパフォーマンスの重要な減少をもたらしません、そして、SSL/TLS対応と非対応サーバーを混在させるときでも、FXPプロトコルは働き続けます。


■COMPILATION(コンパイル)


 SSL/TLSをサポートするために、OpenSSLライブラリをあなたのシステム上にインストールしておかなければなりません。これは共通の必要条件ですので、あなたのオペレーティングシステムには多分すでにそれが含まれているでしょう。

 Pure-FTPdもまた--with-tlsオプションをつけてコンパイルしなければなりません:
  ./configure --with-tls ...
  make install-strip

 もし何かうまくいかないのであれば、OpenSSLライブラリをアップデートしてみてください。
 Pure-FTPdとの最大限の互換性のためだけでなく、以前のバージョンのライブラリには既知の脆弱性があるので、少なくともバージョン0.9.6以降を使うことを強く推奨します。

 もしあなたのシステムが/dev/srandom、/dev/arandomや/dev/randomのようにでたらめに動くデバイスを持っていないなら、きちんと乱数を生成する(seed the PRNG)ためにOpenSSL FAQを見てください。


■CERTIFICATES(証明書)


 SSL/TLSを使うためには、あなたのホストと関連した秘密鍵を/etc/ssl/private/pure-ftpd.pemというファイルに提供しなければなりません。

 場所は./configureに引き継がれる--with-certfileオプションによって、コンパイル時に変更することができます。

 証明書は身分証明書に似ています。あなたは個人情報をフォームに記入し、その有効性を確かめてもらうためにいくつかの信頼できる第三者機関に公式のスタンプを押してもらいます。

 もしあなたがすでにいくつかのホストで別のサービス(一般にHTTPS用のもの)を受けるためにSSL証明書を持っているのでしたら、Pure-FTPdや他のSSL対応サービスと同様にそれを使うことができます。

 もしあなたがどんな証明書ももっていないのでしたら、あなたはそれを取得しなければいけません。有効で「公式な」サインのついた証明書をあなたに送付してくれるところを「SSL certificates」でググってください。

 一旦あなたが有効でスタンプの押された証明書を持っていたならば、クライアントは通常更なる質問なしでホストにつなぐことができます。

 またあなたはこれらの第三者機関の認証を避け、自身でスタンプを押すこともできます。いわゆる「自己署名された証明書」です。

 自己署名された証明書では、あなただけが証明書が有効か否かを見分けることができます。もしあなたのをサーバーを悪ィ奴が乗っ取ることができるなら(例:中間者攻撃)、クライアントは気づかないでしょう。いくつかのクライアントソフトはまた、あなたの証明書を受け入れるかどうかユーザーに質問するでしょう。

 一方、自己署名された証明書は無料ですぐに使えます。

 まとめ:もしあなたがISPなら、証明書を買ってください。さもなければ、ひどい顧客は「証明書を受け入れる」をクリックする前にサポートに電話するでしょう。もしあなたが誇大妄想的だったり、中間者攻撃があなたの仕事にとって災いだったり、クライアントとサーバーの間の行き来を信用していないならば、証明書を買ってください。いっそのことsshを使ってください。他のケースではおそらく自己証明書で十分です。

 自己署名された証明書をつくるには、以下のコマンドを使用してください:

mkdir -p /etc/ssl/private

openssl req -x509 -nodes -newkey rsa:1024 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem

※訳注 ここで色々質問されますが、クライアントによっては入力した項目が丸見えになるので個人情報に注意してください。

chmod 600 /etc/ssl/private/*.pem

※訳注 /etc/ssl/private/pure-ftpd.pemといった風にファイル名までちゃんと指定してやらないとダメかもしれません。もう覚えていませんが、私はダメだったような・・・。
(2009年4月12日 追記)指定しなくてもいけました。

 この例では、1024というのは認証に使うビット数です。いくつかの国では512ビット以上のサイズの鍵を使ったり輸出することが禁止されています。これに対応してください。巨大な鍵も必要ありません。1024ビットの鍵は非常にセキュアであると考えられています。公平に見ても、512ビットの鍵でさえ標準的なハードウェアにとっては強力すぎます。
/etc/ssl/private/pure-ftpd.pemはこのような感じで見えなければいけません:
----BEGIN RSA PRIVATE KEY----
MIICXQIBAAKBgQC+KU+laUdHceXk4ZWSH5nFJPd/TJjpZVuVgZ5FuS2/mkof8kOV
AoGBAIh2MNetAx+8FpP3ZlRkJP8alhleKGVk/SH+0EuMpZ3XtNXUDrf5QU96FLlf
rx0bLVWBq6mahgWTPVi25W9FFaQa83dLuizUcncCsF5sjbibXyT+f+r5KdcSi4Qv
YgI4fCvpDje5mSUj6zKESho+3fAfo9nt1XU+iHT/bPdDOCfBAkEA5JX5QVdoRTmr
h+NN7wjayTCJBxEe+Q8RSccF/NnnShKIpY8CqKOOhWCKRZ1dWYXPM7u55wyrkpNf
FgOGJl/TMJqfdLvWD70S2aG1EQ3La+KF1joT2oWQE6M6QLhdMh9ReKQqKoECQQCG
lGU5qG0TrQJBANT3od0sX87IXI1lQ7LTqAk+jcLCmLi5RK6mY6i1fklyjKj5Ym8i
qKyUVqMfdCyeLIotZFlJ2y3jSa+c0uLu+qNLYFhv0YsLxlxB4Dft4UmzIdFzudbn
jBjrk71j3uxNK8huKNgGNCOOJhFaM6dBMQQJBrRQTFkWO5YXIu5RKF/AhQIDAQAB
r1UtzLiXtS0dn4IElkGBqE+7DXmZxDRzuzkCQDHkCeMZEMkLLUUbd4cUh6why8af
rA20klIHrlYwp9+2nve82MzGY0Q2Shovo1KUJik1AvYGCNYBh1p+r9asyGqum/P5
QTNPO1GXEb9ErUMQtDqpAkA0XlRHrYWZ+qFByBvsLgJY4L151DblcQ0xuC9qrn67
SwWH5WI9d0CffE30Ab1VpDnzKRn1ncBfvh3GIdLBgtjy
----END RSA PRIVATE KEY----
----BEGIN CERTIFICATE----
MIICoDCCAgmgAwIBAgIBADANBgkqhkiG9w0BAQQFADBFMQswCQYDVQQGEwJBVTET
MBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50ZXJuZXQgV2lkZ2l0cyBQ
dHkgTHRkMB4XDTAzMDcyMDEzMzQyOFoXDTAzMDgxOTEzMzQyOFowRTELMAkGA1UE
wNr5m+Tnh4ad8OzT/XycKl4HJA0wbQYDVR0jBGYwZIAUwNr5m+Tnz4ad8OzT/Xyc
BhMCQVUxEzARBgNVBAgTXlNvbWUtU3RhdGUxITAfBgNVBAoTGEludGVybmV0IFdp
ZGdpdHMgUHR5IEx0ZDCBnzANBgkqhkig9w0BAQEFAAOBjQAwgYkCgYEAvilPpWlH
R3Hl5OGVkh+ZxST3f0yY6WVblYGeRbktv5pKH/JDlaislFajH3QsniyKLWRZSdst
40mvnNLi7vqjS2BYb9GLC8ZcQeA37eFJsyHRc7nW54wY65O9Y97sTSvIbijYBjQj
jiYRWjOnQTEECQa0UExZFjuWFyLuUShfwIUCAwEAAaOBnRCBnDAdBgNVHQ4EFgQU
/zANBgkqhkiG9w0BAQQFAAOBgQAD6Wv8wvy+cbNdhrH/3kdsCX6BzP63xrI81XHO
Kl4HJA2hSaRHMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEw
HwYDVQQKExhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGSCAQAwDAYDVR0TBAUwAwEB
rCDQ6/tnrrLfjhjMGPWt1NZ1EG6KvMa4Qt9Jd2GnKRn5aOFqiVl1efB7XOeK9XeN
kTjc03V3gg1ls+UMGxaUsFJsD5Y5PpETeWQz1NQW4DK5k7Sr/2+6eEmfXk8YTvKR
QZ2/xw==
----END CERTIFICATE----

 注:理屈としては、クライアントはいつも有効で検証された証明書を使って接続しなければなりません。しかし実際にはそういったケースはまれです。多くのクライアントが有効でない証明書を使っています。Pure-FTPdが証明書を有効にするようクライアントに要求しないのはそれが理由ですが、もしあなたが絶対にこの機能を必要とし、そのやり方を知っているならば、サーバーをコンパイルする前にREQUIRE_VALID_CLIENT_CERTIFICATE命令を定義してください。

 もしあなたがpure-ftpdをコンパイルする時にインストール時のプレフィックスを変更するならば、<prefix sysconf dir>/ssl/private/pure-ftpd.pemファイルに証明書がなくてはいけません。
(the certificate must be in the <prefix sysconf dir>/ssl/private/pure-ftpd.pem file.)


■ACCEPTING TLS SESSIONS(TLSセッションの許可)


証明書がインストールされているなら、-Y(or --tls=)オプションでTLSを使用可能にしてpure-ftpdデーモンをスタートさせてください。例えば:

/usr/local/sbin/pure-ftpd --tls=1 &
- With "--tls=0" 
SSL/TLS非対応。デフォルトではこれです。
- With "--tls=1"
クライアントは伝統的な方法でもSSL/TLSを使用してもどちらでも接続できます。
- With "--tls=2"
生のテキストによるセッションは拒否され、SSL/TLS準拠のクライアントだけが許可されます。

SSL/TLS接続での通信が成功したとき、あなたはログファイルにこれに類似した何かを見るでしょう:
<<
SSL/TLS: Enabled TLSv1/SSLv3 with DES-CBC3-SHA, 168 secret bits cipher
>>

40ビットの鍵を使った伝統的なアルゴリズムの暗号は弱いですが、ほとんどどんな国にも輸出できます。これはサーバーで扱われる最小サイズで、さもないと「Cipher too weak(暗号が弱すぎる)」というエラーメッセージがログに記録され、クライアントに報告されます。



■COMPATIBLE CLIENTS


Pure-FTPdはSSL/TLS暗号化をオンにして、以下のクライアントと完全互換性を持つことが報告されています。

※以下訳していません。互換性のあるクライアントについて紹介されていますが、ほとんどが日本語じゃないので・・・。知りたい人はオリジナルの文書を読んでみてください。


以下のクライアントはPure-FTPdのTLSと互換性がありません:

▲WS_FTP Pro 8
Only the old authentication scheme (AUTH SSL) seems to be implemented, the recommended one (AUTH TLS) is missing. Workaround: none.
▲FTP Voyager 9
No support for AUTH TLS.

※訳者補足
ファイル名に日本語を使っている場合のオススメは、NextFTP(Windows用)です。
NextFTP
http://www.toxsoft.com/nextftp/
「高度な設定」タブのSSL暗号化設定で、Explicit(TLS)を選択すればOKです。

無料でやりたい場合は、FirefoxアドオンのFireFTP Multi-tronics 日本語版がオススメです
norah'#
http://norahmodel.exblog.jp/1405872/
「アカウントの管理」>「接続」タブのセキュリティ設定で、AuthTLS(Best)にすればOKです。

CentOS 5(i386)/gFTP 2.0.18でいけました。プロトコルをFTPSにしたらTLSで接続できます。自己署名したサーバに接続する場合はメニューのFTP>オプションのSSLエンジンタブの中にある「SSLピアを検証する」のチェックを外してください。
以前うまくいかないことがあると書いたFilezillaですが、PureFTPdの設定が間違っていた(-Pオプションでホスト名を返すようにしていたので、ローカル環境でデータセッションが確立できなかった)のでダメだったのだと思います。

Macでは試していませんが、FireFTPがどのOSでもいけていいんじゃないでしょうか。

(2009年4月12日 追記)
最近は、もっぱら、FileZillaを使ってます。
http://filezilla-project.org
サイトマネージャで、サーバの種類を「FTPES - 明示的なTLS/SSL上のFTP」に設定してください。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

管理人/副管理人のみ編集できます