我无法将聊天应用程序连接到在Ubuntu 16.04上运行的Node.js服务器。问题似乎是使用' letsencrypt'生成的ssl证书。
我已使用openssl证书成功连接到我的Node.js服务器 - 但这仅适用于我的Chrome浏览器。
这是我的Node.js部分的代码。:
let fs = require('fs');
let https = require('https');
var options = {
key: fs.readFileSync('./file.pem'),
cert: fs.readFileSync('./file.crt')
};
let server = https.createServer(options);
let io = require('socket.io')(server);
let Redis = require('ioredis');
let redis = new Redis();
redis.subscribe('all-chat');
redis.on('message', function (channel, message) {
message = JSON.parse(message);
io.emit(channel + ':' + message.event, message.data);
});
server.listen(3201);
我从浏览器获取的错误代码是。:
net::ERR_INSECURE_RESPONSE
我的猜测是,由于某些奇怪的原因,我获得的证书不符合某种标准,因此浏览器会放弃响应。
我可以在网上收集有关此问题的内容 - 解决方案应该是使用来自' letsencrypt'和/或。的多种变体:
var options = { ... };
而且我相信我已经尝试了所有可能的组合。
如果我在两个窗口中打开我的网站,一个在Edge中,一个在Chrome中,我可以成功地将消息从Edge发送到Chrome - 但消息将不会在Edge中显示。
提前感谢任何可能让我重回正轨的细节!
答案 0 :(得分:0)
答案很简单。为确保您可以使用证书,您可以使用https://www.digicert.com/help/上的诊断工具。
对于从客户端到我的Node.js端的连接,我在客户端声明了IP - 当使用已经使用公共域创建的证书时,这是不可行的。所以我将客户端的IP从IP更改为公共域,并且它有效!