尝试连接到node.js服务器(不在本地主机上)时,如何修复ERR_CERT_COMMON_NAME_INVALID?

时间:2020-01-20 23:50:45

标签: node.js socket.io tampermonkey

因此,我试图在Tampermonkey(JavaScript)中创建一个脚本以将数据发送到node.js服务器。对于那些不知道Tampermonkey是什么的人,它基本上是对在网站上运行JavaScript脚本以添加内容的扩展(例如,在.io游戏中进行叠加)。但是,与此同时,我正在尝试将数据从node.js服务器发送到另一台计算机上的另一个客户端(不是问题)。我停止在本地主机上而不是在计算机地址上托管node.js服务器时出现了问题(因此它可以与2号计算机上的客户端通信) 这是我的服务器代码

const app = require('express')();
const https = require('https');
const fs = require('fs');

const httpsServer = https.createServer({
    key: fs.readFileSync('./server.key'),
    cert: fs.readFileSync('./server.crt')
});

const port = 4000;

httpsServer.listen(port, "192.168.1.38", function () {
    console.log('LISTENING');
});

const ioServer = require( "socket.io" );
const io = new ioServer();
io.attach( httpsServer );

io.on( "connection", function( socket ) {
    console.log('client connected');
});

Tampermonkey客户端的代码为:

// ==UserScript==
// @name         testscript
// @namespace    http://tampermonkey.net/
// @version      1
// @description  try to take over the world!
// @author       HueHanaejistla
// @match        *://diep.io/#*
// @grant        none
// @require      https://cdnjs.cloudflare.com/ajax/libs/socket.io/1.4.5/socket.io.min.js
// ==/UserScript==



var socket = io.connect('https://192.168.1.38:4000');;
function socketThing() {
    socket.emit('test', {"test": "data"});
}
setInterval(socketThing, 500);

(这只是一个测试脚本,因此实际上并没有做任何有用的事情)

无论何时运行脚本,它都会在控制台中显示:

GET https://192.168.1.38:4000/socket.io/?EIO=3&transport=polling&t=M_5NBeo net::ERR_CERT_COMMON_NAME_INVALID

我尝试了许多解决方案,例如How can I create a self-signed cert for localhost?How to create a self-signed certificate with OpenSSL以及许多其他解决方案,但是它们不起作用。我不确定是否应该为本地主机创建一个自签名证书,然后将其更改为计算机的IP,还是必须创建完全不同的内容。

我目前已尝试: -创建通用名称为192.168.1.38的证书 -创建一个全部为192.168.1.38的证书 -使用192.168.1.38和https://192.168.1.38作为备用IP创建一个证书

1 个答案:

答案 0 :(得分:0)

在处理项目时遇到错误,我通过在客户端指定正确的IP解决了该错误。我之前有过类似你写的东西

    var socket = io.connect('https://192.168.1.38:4000');

然后我正在协助我的同事说,该错误可能是由于子网差异所致。我不太了解,但他建议我改成下面的样子

    var socket = io.connect('https://OurAlreadyHostWebsite.org:4000/');

它奏效了。因此,以防万一,您可以使用它来找到解决方案。