我无法将我的聊天应用程序连接到运行在Ubuntu16.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中。
提前感谢任何可能让我重回正轨的细节!
发布于 2017-08-21 23:21:05
答案很简单。为了确保您可以使用证书,您可以使用https://www.digicert.com/help/上的诊断工具。
对于从客户端到我的Node.js端的连接,我在客户端声明了IP -当使用公有领域创建的证书时,这将不起作用。所以我把客户端的IP从IP改成了公有域名,并且成功了!
https://stackoverflow.com/questions/45792611
复制相似问题