node.js - 如何在 Node 中将套接字升级到 TLS?

标签 node.js ftp openssl ssl

我正在尝试在 Node 中编写一个 FTP 服务器,它支持具有显式 AUTH 的 TLS。在这种模式下,客户端向服务器发送一个 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:
]

我实际上已经指定了密码(createSecurePair 被传递给 options dict,其中 ciphers 设置为 'RC4-SHA:AES128-SHA: AES256-SHA')。我已经对连接进行数据包嗅探,似乎发生的情况是,在服务器响应客户端的 AUTH TLS 命令后,客户端和服务器之间有一个简短的交换,我认为这是(失败) TLS 协商。但我对 TLS 的了解还不够深入,无法进行进一步调查。我应该如何调查此错误的来源?

我正在运行 Node 0.8.1,并且与 0.6.19 有同样的问题。

最佳答案

这只是一个愚蠢的错误。我正在修改的 FTP 服务器代码使用了 socket.setEncoding。当然,打开它会搞砸 TLS 协商。

关于node.js - 如何在 Node 中将套接字升级到 TLS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11399986/

相关文章:

linux - 从 FTP 下载最新文件的 shell 脚本

python - "ERROR:root:code for hash md5 was not found"使用任何 hg mercurial 命令时

openssl - 如何在 OpenSSL 中指定 x509 配置属性的数据类型

Node.js - 找不到绑定(bind)文件

javascript - 当我尝试使用 nodejs 请求模块传递 header 信息时,出现以下 TypeError 错误

PHP FTP 递归目录列表

linux - 保护 UDP - OpenSSL 或 GnuTls 或...?

javascript - 如何在 NestJS 过滤器中使用 @Catch() 接口(interface)

mysql - Node mysql变量比较

时间:4 : check if FTP directory exists