2

明示的なAUTHでTLSをサポートするFTPサーバーをノードに書き込もうとしています。このモードでは、クライアントAUTH TLSはサーバーにコマンドを送信します。サーバーは確認応答で応答し、クライアントに安全な接続のネゴシエーションを開始するように促します。

このコードを使用して接続をアップグレードしています: https://github.com/andris9/rai/blob/master/lib/starttls.js。net.Server を使用して単純なエコー サーバーを作成し、starttls関数を使用してソケットを安全な接続に即座にアップグレードすることで、これが機能することを確認しました。を使用してこのテスト サーバーに接続するとopenssl s_client、期待どおりに動作します。

ただし、明示的な認証で TLS をサポートする FTP クライアントを使用してテスト FTP サーバーに接続しようとすると、次の例外が によって返されるオブジェクトによって発生しますcreateSecurePair

[Error: 140735236446560:error:1408A0B7:SSL routines:SSL3_GET_CLIENT_HELLO:no ciphers     
 specified:../deps/openssl/openssl/ssl/s3_srvr.c:1009:
]

実際に暗号を指定しました(「RC4-SHA:AES128-SHA:AES256-SHA」に設定された辞書createSecurePairが渡されます)。私は接続をパケットスニッフィングしましたが、サーバーがクライアントのコマンドに応答した後、クライアントとサーバーの間で短いやり取りがあり、これが (失敗した) TLS ネゴシエーションであると思われます。しかし、これ以上調査するほど TLS について十分に理解していません。このエラーの原因を調査するにはどうすればよいですか?optionsciphersAUTH TLS

ノード 0.8.1 を実行していますが、0.6.19 でも同じ問題が発生しました。

4

1 に答える 1

3

これはばかげた間違いであることが判明しました。私が変更していた FTP サーバーのコードはsocket.setEncoding. もちろん、これをオンにすると、TLS ネゴシエーションが台無しになりました。

于 2012-07-10T13:39:54.407 に答える