明示的な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 について十分に理解していません。このエラーの原因を調査するにはどうすればよいですか?options
ciphers
AUTH TLS
ノード 0.8.1 を実行していますが、0.6.19 でも同じ問題が発生しました。