Как исправить ошибку ERR_CERT_COMMON_NAME_INVALID при попытке подключиться к серверу node.js (не расположен на локальном хосте)? - PullRequest
0 голосов
/ 21 января 2020

Поэтому я пытаюсь создать скрипт в 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

Я испробовал множество решений, таких как Как создать самозаверяющий сертификат для localhost? и Как создать самозаверяющий сертификат с OpenSSL и многие другие, но они не работают. Я не уверен, стоит ли мне создавать самозаверяющий сертификат для localhost, а затем просто изменить его на IP-адрес моего компьютера или мне нужно создать что-то совершенно другое.

В настоящее время я пытался: - создать сертификат с общим именем как 192.168.1.38 - создание сертификата со всем как 192.168.1.38 - создание сертификата с 192.168.1.38 и https://192.168.1.38 в качестве альтернативных IP-адресов

1 Ответ

0 голосов
/ 14 апреля 2020

Я столкнулся с ошибкой при работе над проектом и решил ее, указав правильный IP-адрес на стороне клиента. Раньше у меня было что-то вроде того, что вы написали

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

, тогда мой коллега, который помогал мне, сказал, что ошибка может быть из-за различий su bnet. Я не очень понял, но он предложил мне перейти на что-то вроде этого ниже

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

И это сработало. Так что на всякий случай это дает подсказку, которую вы можете использовать, чтобы найти решение.

...