Puncte:0

Conexiunea websocket securizată la serverul care rulează pe EC2 eșuează

drapel us

Am un server websocket node.js care rulează pe o instanță EC2 pe portul 8080. Conexiuni websocket normale (ws://) funcționează bine, dar când încerc să fac o conexiune sigură (wss://), conexiunea websocket eșuează.

Îmi dau seama că cererile wss sunt trimise la portul 443, așa că folosesc ALB pentru a redirecționa cererile de pe portul 443 la portul 8080. Deoarece sunt foarte nou în AWS, nu știu dacă fac acest lucru corect. Iată ce am făcut.

  1. Serverul Node.js ascultă pe portul 8080 într-o instanță EC2.
  2. Acestea sunt regulile de securitate de intrare către acea instanță EC2

Reguli de securitate de intrare

  1. Un echilibrator de încărcare a aplicației cu ascultător HTTPS: 443 Îl trimite către instanța mea EC2 de pe portul 8080 folosind protocolul HTTPS. De asemenea, am atașat un certificat SSL la ALB.

Pur și simplu nu pot să-mi dau seama ce greșesc. Orice ajutor este apreciat.

ACTUALIZAȚI:

  1. Am creat două grupuri de securitate (ec2-sg și alb-sg) și le-am configurat astfel încât ec2-sg să primească trafic de la alb-sg.

Reguli de securitate de intrare (alb-sg)

Regula de securitate la ieșire (alb-sg)

Reguli de securitate de intrare (ec2-sg)

Cu toate acestea, nu o pot face să funcționeze. Grupul țintă trece verificarea de sănătate, am activat sesiunea sticky, dar conexiunea websocket continuă să eșueze. Conexiunea ws normală care funcționa înainte a încetat să funcționeze. Acest lucru mă face să cred că greșesc ceva cu ALB (din moment ce funcționează fără echilibrul de încărcare)

Actualizare 2:

Am activat jurnalele de acces pentru echilibrul meu de încărcare. Iată jurnalul:

https 2021-10-08T08:55:39.157549Z app/alb-latest/3e73469ba9514449 167.94.138.60:32854 172.31.93.226:8080 -1 -1 -2 -1 -1 4 
„GET https://3.208.76.74:443/ HTTP/1.1” „-” ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 arn:aws:elasticloadbalancing:us-east-1:144045735746:targetgroup/ec2-808 -server/2cbf4f7eb51c201e 
"Root=1-6160078b-606aed86364c5e3f7db627f1" "-" "arn:aws:acm:us-east-1:144045735746:certificate/53a04011-1ea7-4689-4689-4689-4689-4689-4689-4689-4689-4689-4689-4689-4689-170045735746:certificat 
"înainte" "-" "-" "172.31.93.226:8080" "-" "-" "-"

ALB Configurație de bază 1

ALB Configurație de bază 2

ALB Ascultători De asemenea, am activat adezivitatea la nivel de grup pe grupul țintă timp de 1 zi

Detalii grup țintă

Tim avatar
drapel gp
Tim
Sunt instanța ALB și EC2 ambele în același grup de securitate? În general, ar trebui să aveți câte un SG pentru fiecare, iar EC2 SG ar trebui să permită intrarea din ALB SG.
Debabrata Mondal avatar
drapel us
@Tim Erau în același grup de securitate, da. Am schimbat asta acum dar tot nu merge. Ați putea să aruncați o privire la actualizările pe care le-am postat?
Tim avatar
drapel gp
Tim
Grupurile dvs. de securitate mi se par ok, deși nu pot verifica lucruri precum ID-urile. Două lucruri de făcut 1) Activați jurnalele de acces pe ALB și țintă și verificați dacă solicitările ajung pe ALB și pe server - dacă este mai ușor, puteți instala un server web standard pe portul 80 pentru testare. Apoi, odată ce ați terminat 2) Editați postarea pentru a afișa părțile importante ale configurației ALB.
Debabrata Mondal avatar
drapel us
@Tim Am editat postarea. Ai nevoie de alte informații?
Tim avatar
drapel gp
Tim
Citiți din nou ultimul meu comentariu. Nu ne dați doar jurnalele, trebuie să le înțelegeți, să verificați jurnalele de pe serverul web și să vă asigurați că cererea este acceptată.Dacă nu, puteți configura Nginx / Apache și încercați cu un protocol mai înțeles pentru a verifica că lucrurile funcționează în general. Cred că cel mai bine ar fi să apelați la un profesionist, vă putem oferi ajutor, dar cred că aveți nevoie de mai mult ajutor decât putem oferi noi.
drapel cn
ALB SG permite doar portul 8080 de ieșire către un alt SG - nu va putea trimite răspunsul către client. Eliminați regula de ieșire și concentrați-vă pe regulile de intrare deocamdată - grupurile de securitate sunt cu stare, astfel încât ieșirea nu este necesară și adaugă complicații.
Debabrata Mondal avatar
drapel us
Mulțumesc @shearn89, asta are mult sens!
Puncte:0
drapel cn

Copierea și lipirea comentariului meu într-un răspuns în cazul în care rezolvă problema.

ALB SG permite doar ieșirea portului 8080 către un alt SG. Aceasta înseamnă că nu va putea trimite răspunsul către client, care va asculta pe un port aleatoriu care nu este 8080. Cea mai bună abordare este să eliminați regulile de ieșire și să vă concentrați pe regulile de intrare - grupurile de securitate sunt stateful, astfel încât regulile de ieșire nu sunt neapărat necesare și adaugă complicații!

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.