BG Development


Страници: (2) [1] 2   ( Първото ново мнение ) Reply to this topicStart new topicStart Poll

> WebSocket over HTTPS SSL not working
bishkot
Публикувано на: 07-02-2021, 18:52
Quote Post



Име:
Група: Потребител
Ранг: Редовен член

Мнения: 385
Регистриран на: 17.05.05



Здраейте, изпращам съобщение от клиента до сървъра по този начин.

client.html
CODE

function execute_orders()
{

      let socket = new WebSocket("ws://cryptobot.ddns.net:8010");

      socket.onopen = function(e) {
            
            
            
            
        alert("[open] Connection established");
        alert("Sending to server");  
        socket.send("Hi , this is my message");
      };

      socket.onmessage = function(event) {
        alert(`[message] Data received from server: ${event.data}`);
      };

      socket.onclose = function(event) {
        if (event.wasClean) {
                  $("#execute_orders_response").html('Connection closed cleanly');
                    
          alert(`[close] Connection closed cleanly, code=${event.code} reason=${event.reason}`);
        } else {

          alert('[close] Connection died');
        }
      };

      socket.onerror = function(error) {
        //alert(`[error] ${error.message}`);
      };
      socket.onerror = function(event) {
              console.error("WebSocket error observed:", event);
            };
            
      
}



nodejs server
CODE


const WebSocket = require('ws');
const fs = require('fs');
const ws = new WebSocket.Server({ port: '8010' ,host:'0.0.0.0'});


 ws.on('connection', function connection(ws,request,client) {
      
  ws.on('message', function message(message) {
      
  console.log(message);
 
 
});

});




През http://domain.com/cliend.html всичко работи но не и през https.
Пробвах също с wss

За насоки ще бъда благодарен.
PMEmail Poster
Top
thrawn
Публикувано на: 07-02-2021, 19:02
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 3076
Регистриран на: 17.01.17



Не виждам никъде да конфигурираш ssl -a. Трябва да посочиш поне сертификат и ключ за него.
PMEmail Poster
Top
bishkot
Публикувано на: 07-02-2021, 20:27
Quote Post



Име:
Група: Потребител
Ранг: Редовен член

Мнения: 385
Регистриран на: 17.05.05



До колкото разбирам става дума за следното
CODE
const server = https.createServer({
 cert: fs.readFileSync('/path/to/cert.pem'),
 key: fs.readFileSync('/path/to/key.pem')
});
const wss = new WebSocket.Server({ server });


но къде да намяря cert.pem и key.pem

Имам ги само под формата на дълъг стринг..... - споделен хостинг
PMEmail Poster
Top
relax4o
Публикувано на: 07-02-2021, 20:39
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2580
Регистриран на: 04.04.07



Слагаш ги двете в един файл и запазваш файла като .pem и го подаваш на NodeJS на cert и key, и си ти.


--------------------
Бисери :D

QUOTE (oveRLuckEd)
Ползваш някоя нова версия на PHP, която е вече ооп ориентирана и заради това ти я изкарва тази грешка.


QUOTE (nbacool2)
Щом няма input полета, значи няма откъде да се направи SQL инжекция Very Happy
PM
Top
bishkot
  Публикувано на: 07-02-2021, 23:24
Quote Post



Име:
Група: Потребител
Ранг: Редовен член

Мнения: 385
Регистриран на: 17.05.05



-----BEGIN CERTIFICATE REQUEST-----

това

-----BEGIN PRIVATE KEY-----

и това

?

В клиента или сървъра? Сори ако ръся бисери

Това мнение е било редактирано от bishkot на 07-02-2021, 23:28
PMEmail Poster
Top
relax4o
Публикувано на: 08-02-2021, 00:39
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2580
Регистриран на: 04.04.07



Точно така. На сървъра разбира се.


--------------------
Бисери :D

QUOTE (oveRLuckEd)
Ползваш някоя нова версия на PHP, която е вече ооп ориентирана и заради това ти я изкарва тази грешка.


QUOTE (nbacool2)
Щом няма input полета, значи няма откъде да се направи SQL инжекция Very Happy
PM
Top
thrawn
Публикувано на: 08-02-2021, 06:50
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 3076
Регистриран на: 17.01.17



CERTIFICATE REQUEST е заявка за сертификат, НЕ сертификат.

Освен това, това което си дал като пример (не ползвам node.js) предполага, че сертификатът и ключът трябва да са в PEM формат (барни данни) а вие говорите за DER формат (текстов формат с base64 кодирани данни).

Нямам идея дали node.js работи и с двата формата. Ако не, ще трябва да си конвертира сертификатът и ключ му от DER в PEM.
PMEmail Poster
Top
bishkot
Публикувано на: 08-02-2021, 09:51
Quote Post



Име:
Група: Потребител
Ранг: Редовен член

Мнения: 385
Регистриран на: 17.05.05



client.html
CODE
      let socket = new WebSocket("wss://domain.net:5000");

      socket.onopen = function(e) {
        alert("[open] Connection established");
        alert("Sending to server");
        socket.send("My name is John");
      };

      socket.onmessage = function(event) {
        alert(`[message] Data received from server: ${event.data}`);
      };

      socket.onclose = function(event) {
        if (event.wasClean) {
          alert(`[close] Connection closed cleanly, code=${event.code} reason=${event.reason}`);
        } else {
          // e.g. server process killed or network down
          // event.code is usually 1006 in this case
          alert('[close] Connection died');
        }
      };

      socket.onerror = function(error) {
        alert(`[error] ${error.message}`);
      };
      


Server

CODE

const fs = require('fs');
const https = require('https');
const WebSocket = require('ws');

const server = https.createServer({
 cert: fs.readFileSync('1.pem'),
 key: fs.readFileSync('1.pem'),

});
const wss = new WebSocket.Server({ server });


wss.on('connection', function connection(ws) {
      console.log('adsd');
 ws.on('message', function incoming(message) {
   console.log('received: %s', message);
 });

 ws.send('something');
});

server.listen(5000);


Дава алерт "[error] undefined"

Това мнение е било редактирано от bishkot на 08-02-2021, 09:52
PMEmail Poster
Top
bishkot
Публикувано на: 08-02-2021, 13:24
Quote Post



Име:
Група: Потребител
Ранг: Редовен член

Мнения: 385
Регистриран на: 17.05.05



По този начин би ли работило през https .
В случая кой SSL сертификат е нужно да се ползва на domain1 или на domain2 в nodejs сървъра

user posted image

Благодаря
PMEmail Poster
Top
thrawn
Публикувано на: 08-02-2021, 15:30
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 3076
Регистриран на: 17.01.17



Какво се опитваш да постигнеш реално?
WebSocket комуникация между два сървъра или искаш един сървър да сервира приложението а друг да управлява сокет комуникацията?
PMEmail Poster
Top
1 потребители преглеждат тази тема в момента (1 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Страници: (2) [1] 2  Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2019 | BG Development | All Rights Reserved
RSS 2.0