Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Node.js a websocket secure

Aktivity
Avatar
Jenkings
Tvůrce
Avatar
Jenkings:27.3.2021 7:40

Zdravím.
Mám rozjetý websocketový server v Node.js. Potřeboval bych ho teď ale překlopit na websocket secure a vůbec se mi nedaří.
Aplikaci mám odladěnou tak, že na standardním nezabezpečeném websocketu vše funguje jak má. Nyní jsem ale na web nasadil https s certifikátem od lets encrypt. To znamená že z https stránky už se můžu z bezpečenostních důvodů připojit pouze na websocket secure. Zkoušel jsem nějaká řešení z internetu, ale vždy jsem skončil na tom že se mi nepodařilo navázat zabezpečené spojení.

můj kód:

const express   = require('express')
const WebSocket = require('ws')

....

// Setup Express and start listening on PORT
const app = express()
  .use(express.static('public'))
  .listen(
    PORT,
    () => console.log(`Listening on ${PORT}`)
  );

// WebSocket Creation
const wss = new WebSocket.Server({server: app});

.....

wss.on('connection', (ws) => {
   ws.on('message', (message) => {
        .....
   }

   ws.on('close', () => {
      ......
   }
}
Odpovědět
27.3.2021 7:40
Největší časovou náročnost má výpočet časové náročnosti..
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:28.3.2021 0:08

google = web socket js ssl lets encrypt
https://community.letsencrypt.org/…nce/125391/4
Tady pisi, ze pro WS je nutne vygenerovat spesl certifikat s ip adresou toho ws

this.wsocket = new WebSocket(‘wss://109.74.193.127:3000’);

Jestli tam pouzivas certifikat https, tak ten je generovany pro jinou webovou sluzbu adresu a port.

 
Nahoru Odpovědět
28.3.2021 0:08
Avatar
Jan Poláček
Tvůrce
Avatar
Jan Poláček:28.3.2021 16:17

Ahoj, nedávno jsem řešil něco podobného, mám server, tam mám web, také zabezpečený pomocí LetsEncrypt a potřeboval jsem to propojit dohromady s node.js, což byl celkem problém, především co se týče zabezpečení v prohlížeči, pokud jsem node.js neměl zabezpečené, zobrazovalo to mixed content a nejelo to, kdy jsem zkusil vlastnoručně podepsanej certifikát, tak zase problém, že to je bez autority, nakonec jsem vymyslel, že někde ten certifikát musím mít na serveru co se týče domény, tím pádem jsem použil ten samej i pro node, což vyšlo, jediné co je jinak je port, jinak doména pro node i web stejná. Tohle to mi funguje, s tím že tedy používám socket.io (nejsem expert na node, internet + pokus/omyl)

const app = require('express')();
const cors = require('cors');
const fs = require("fs");
var corsOptions = {
      origin: "https://domena.cz",
    methods: ["GET", "POST"],
    allowedHeaders: ["my-custom-header"],
    credentials: true
}
app.use(cors(corsOptions));
//VYTVOŘENÍ HTTPS SERVERU
const httpServer = require("https").createServer({
  key: fs.readFileSync("/etc/letsencrypt/live/domena.cz/privkey.pem"),
  cert: fs.readFileSync("/etc/letsencrypt/live/domena.cz/cert.pem"),
},app);
const options = {
 cors: {
    origin: "https://domena.cz",
    methods: ["GET", "POST"],
    allowedHeaders: ["my-custom-header"],
    credentials: true
  }
 };
const io = require("socket.io")(httpServer, options);


//SPUŠTENÍ HTTPS SERVERU NA PORTU 3000
httpServer.listen(3000, () => {
  console.log('Poslouchám na portu 3000');
});
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
28.3.2021 16:17
Instrukce na adrese 0x77104f29 odkazovala na adresu paměti 0x00000014. S pamětí nelze provést operaci: written.
Avatar
Jenkings
Tvůrce
Avatar
Odpovídá na Jan Poláček
Jenkings:1.4.2021 20:31

Tak tvoje rada naprosto perfektní. V podstatě jsi do detailu přesně popsal můj problém, takže mockrát díky, podařilo se mi to vyřešit za pět minut

Nahoru Odpovědět
1.4.2021 20:31
Největší časovou náročnost má výpočet časové náročnosti..
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.