Tag: starttls

在NodeJS中使用协议实现STARTTLS

我正在尝试将STARTTLS升级添加到现有的协议(目前工作在纯文本中)。 首先,我使用一个简单的基于行的回显服务器(这是一个可怕的混乱,没有error handling或处理数据包到行 – 但它通常只是作为控制台一次发送一行一行到标准input)。 我认为我的服务器是正确的,但是当我键入starttls时,两端都会出现相同的错误: events.js:72 throw er; // Unhandled 'error' event ^ Error: 139652888721216:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:../deps/openssl/openssl/ssl/s23_clnt.c:766: at SlabBuffer.use (tls.js:232:18) at CleartextStream.read [as _read] (tls.js:450:29) at CleartextStream.Readable.read (_stream_readable.js:320:10) at EncryptedStream.write [as _write] (tls.js:366:25) at doWrite (_stream_writable.js:221:10) at writeOrBuffer (_stream_writable.js:211:5) at EncryptedStream.Writable.write (_stream_writable.js:180:11) at Socket.ondata (stream.js:51:26) at Socket.EventEmitter.emit (events.js:95:17) at Socket.<anonymous> (_stream_readable.js:746:14) 我完全误解了如何在客户端进行升级吗? 目前,我使用相同的方法将TLS-ness添加到普通stream的每一端。 这种感觉是错误的,因为客户端和服务器都将在协商中扮演同样的angular色。 […]

node.js中STARTTLS的特定TLS版本

如何用tls.createSecurePair或crypto.createCredentials指定TLS版本? 我在问b / c我想添加STARTTLS服务器支持到这个starttls节点库 。

套接字之间的双工pipe道似乎在SMTP后面的NAT后面继续TLS,但有时只是

这是设置: [Proxy/Relay Server] <———[(SMTP TLS test client) Test server] ^ | (Internet) v ————–+—————– | [Router] | | [ Home email appliance machine | (Home email server app (Node.js)) | (Postfix) ] 所以这个小小的服务器就在家里的NAT后面。 使用外部服务器作为IMAP和SMTP的代理/中继。 家庭电子邮件设备应用程序连接到互联网上的代理/中继服务器。 家庭电子邮件设备应用程序连接到本地主机上的SMTP Postfix端口。 家庭电子邮件应用程序在两个连接之间创build一个双向pipe道。 从Internet上的testing服务器上,将支持TLS的SMTP客户端连接到代理/中继服务器。 代理/中继服务器在代理连接和来自家庭电子邮件设备的预先存在的连接之间传输数据。 SMTP客户端执行STARTTLS协议。 家庭电子邮件设备应用程序通过pipe道在代理/中继和本地主机SMTP之间传输数据,以通过TLS执行SMTP。 我们使用openssl s_client来testing到代理/中继服务器的TL连接,该服务器将数据来回发送到NAT后面的客户端。 它对于纯文本非常有效,但是我不确定它是否对TLS始终如一的工作。 偶尔我会从openssl s_client命令中得到一个完整的输出,带有SSL证书等等,但通常它只是说CONNECTED并且在那里。 不知道这是在这种情况下工作。 基本上它的这个代码运行在具有Postfix的计算机上的NAT(路由器)后面(有一些安全的东西,但基本上是这样): proxyOutgoing = net.connect(proxyport, proxyhost) localSMTP = […]

NodeJS STARTTLS使用SNI

我正在Node.JS中构build一个简单的,具有STARTTLSfunction的POP3代理服务器,而且我还有相当长的一段时间。 代理服务器作为许多后端服务器的前端,所以它必须dynamic加载他们的证书,这取决于客户端的连接。 我试图使用SNICallback,它带给我客户端使用的服务器名称,但之后我无法设置正确的证书,因为在创build安全上下文之前,我需要一个证书。 代码如下: // Load libraries var net = require('net'); var tls = require('tls'); var fs = require('fs'); // Load certificates (created with openssl) var certs = []; for (var i = 1; i <= 8; i++) { var hostName = 'localhost' + i; certs[hostName] = { key : fs.readFileSync('./private-key.pem'), cert : fs.readFileSync('./public-cert' + […]