如何使用自签名证书与节点服务器建立安全的Websocket连接?

时间:2018-08-30 15:37:33

标签: node.js ssl https websocket ssl-certificate

我有一个HTTPS网页,该网页不允许我连接到不安全的Websocket,该Websocket用于与节点服务器通信,因此我尝试将节点服务器迁移到https。提供了客户端https页面来与我以前不安全的页面集成在一起,因此,如果这很重要,我对使用的证书一无所知。

要连接到它,在客户端使用了connection = new Websocket('ws://node_server_address'),它对于不安全的连接可以正常工作。现在,该页面使用https,我仅使用connection = new Websocket('wss://node_server_address'),希望这是我需要在客户端进行更改的所有内容。但是,使用节点服务器上的自签名证书,尝试连接Chrome时出现此错误:

Websocket connection to 'wss://address' failed: Error in connection establishment: net::ERR_CERT_AUTHORITY_INVALID

在Firefox上,所有信息告诉我它无法连接到服务器。我看过很多例子,它们根本没有指定CA,而且据说可以正常工作,所以我希望我不必为此烦恼。但是,假设唯一的解决方案是指定一些有效的CA,那么如何为自签名证书生成该证书?

节点服务器:

const https = require('https');
const WebSocketServer = require('websocket').server;

process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";

let serverOptions = {
    key: fs.readFileSync("./self-signed.key"),
    cert: fs.readFileSync("./self-signed.cert"),
    requestCert: false,
    rejectUnauthorized: false
}

const server = https.createServer(serverOptions, (req, res) => { res.end('') });

server.listen(port, function() { /* Logging */ }

const wsServer = new WebSocketServer({
    httpServer:server
});

0 个答案:

没有答案