2013-12-13 22 views
1

如果我在除443以外的任何其他端口上打我的域,我会得到下面的错误。那么如何在不同的端口上使用nodejs https?运行https不在443上这怎么可能?

安全连接失败 连接到mysite:8080时发生错误。 SSL收到的记录超出了允许的最大长度。 (错误代码:SSL_ERROR_RX_RECORD_TOO_LONG)

例如,本例中的文档中给出他们使用端口8000

// curl -k https://localhost:8000/ 
var https = require('https'); 
var fs = require('fs'); 

var options = { 
    key: fs.readFileSync('test/fixtures/keys/agent2-key.pem'), 
    cert: fs.readFileSync('test/fixtures/keys/agent2-cert.pem') 
}; 

https.createServer(options, function (req, res) { 
    res.writeHead(200); 
    res.end("hello world\n"); 
}).listen(8000); 

使用的CentOS 6

+0

您的代码正在监听端口8000,但您提到的错误有端口8080.是一个错字吗? –

+0

不,我在8080上听,文档中的示例使用的是8000.对不起,我很困惑。 – Iglo

回答

3

record_too_long经常/通常意味着您向期待SSL的客户端发送了非SSL数据。

尝试通过HTTP(而不是HTTPS)访问您的站点和端口。如果它能正常工作,则意外绑定了一个HTTP服务器,而不是HTTPS服务器。

+1

令人惊叹的谢谢你。我仍然不知道我是如何设法绑定一个http服务器的,因为我使用的是https include,但是你已经把我放在了正确的道路上。干杯。 – Iglo

0

在这个非常时刻,我有一个节点。 js服务器使用HTTPS在端口3000上运行。

SSL_ERROR_RX_RECORD_TOO_LONG似乎表明,有一个与主机名的问题(Source

您已经包括了错误中提到的mysite:8080告诉我,你想连接到mysite:8080和该地址不存在。

要进行调试,请尝试通过浏览器访问URL或设置常规HTTP并查看它是否可访问。

+0

它可以正常工作在http上。这是我直接点击页面时得到的错误。所以我可能有SSL问题。我也在使用Cloudflare你使用这项服务吗?这可能会导致我现在的问题。 – Iglo

+0

@Iglo只是为了澄清:我正在通过HTTP端口8080(而不是端口80)运行它,这是否工作?我的服务器是在本地安装的,所以我不必担心防火墙或CDN :) – Lasse

+0

是啊,它可以在端口8080上的http上正常工作,我无法在端口80上运行它,因为我有一个在该端口上运行的Web服务器。 – Iglo