Điểm:0

Kết nối websocket an toàn với máy chủ chạy trên EC2 không thành công

lá cờ us

Tôi có một máy chủ websocket node.js chạy trên phiên bản EC2 trên cổng 8080. Các kết nối websocket bình thường (ws: //) hoạt động tốt nhưng khi tôi đang cố tạo kết nối an toàn (wss: //), kết nối websocket không thành công.

Tôi nhận thấy rằng các yêu cầu wss được gửi tới cổng 443, vì vậy tôi đang sử dụng ALB để chuyển tiếp các yêu cầu trên cổng 443 tới cổng 8080. Vì tôi mới sử dụng AWS nên tôi không biết liệu mình có đang thực hiện đúng cách hay không. Đây là những gì tôi đã làm.

  1. Máy chủ Node.js lắng nghe trên cổng 8080 trong phiên bản EC2.
  2. Đây là các quy tắc bảo mật gửi đến cho phiên bản EC2 đó

Quy tắc bảo mật đầu vào

  1. Một bộ cân bằng tải ứng dụng với người nghe HTTPS: 443 Nó chuyển tiếp nó tới phiên bản EC2 của tôi trên cổng 8080 bằng giao thức HTTPS. Tôi cũng đã đính kèm chứng chỉ SSL cho ALB.

Tôi chỉ không thể tìm ra những gì tôi đang làm sai. Bất kỳ trợ giúp được đánh giá cao.

CẬP NHẬT:

  1. Tôi đã tạo hai nhóm bảo mật (ec2-sg và alb-sg) và định cấu hình chúng sao cho ec2-sg nhận lưu lượng truy cập từ alb-sg.

Quy tắc bảo mật trong nước (alb-sg)

Quy tắc bảo mật gửi đi (alb-sg)

Quy tắc bảo mật trong nước (ec2-sg)

Tuy nhiên, tôi không thể làm cho nó hoạt động. Nhóm mục tiêu vượt qua kiểm tra sức khỏe, tôi đã bật phiên cố định nhưng kết nối websocket vẫn không thành công. Kết nối ws bình thường từng hoạt động cũng đã ngừng hoạt động. Điều này khiến tôi tin rằng tôi đang làm rối tung thứ gì đó với ALB (vì nó đang hoạt động mà không có bộ cân bằng tải)

Cập nhật 2:

Tôi đã bật nhật ký truy cập cho bộ cân bằng tải của mình. Đây là nhật ký:

https 2021-10-08T08:55:39.157549Z app/alb-latest/3e73469ba9514449 167.94.138.60:32854 172.31.93.226:8080 -1 -1 -1 502 - 41 1215 
"NHẬN 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-8080 -máy chủ/2cbf4f7eb51c201e 
"Root=1-6160078b-606aed86364c5e3f7db627f1" "-" "arn:aws:acm:us-east-1:144045735746:certificate/53a04011-1ea7-4689-b6c6-a7372e42191d" 0 2021-10-10-1ea7-4689-b6c6-a7372e42191d" 0 2021-10-10-1ea7-4689-b6c6-a7372e42191d" 0 2021-10-10-1ea7-4689-b6c6-a7372e42191d" 0 2021-10-10-1ea7-4689-b6c6-a7372e42191d" 
"chuyển tiếp" "-" "-" "172.31.93.226:8080" "-" "-" "-"

ALB Cấu hình cơ bản 1

ALB Cấu hình cơ bản 2

Người nghe ALB Tôi cũng đã kích hoạt tính năng gắn bó ở cấp độ nhóm trên nhóm mục tiêu trong 1 ngày

Chi tiết nhóm mục tiêu

Tim avatar
lá cờ gp
Tim
Phiên bản ALB và EC2 có nằm trong cùng một nhóm bảo mật không? Nói chung, bạn nên có một SG cho mỗi và EC2 SG sẽ cho phép xâm nhập từ ALB SG.
Debabrata Mondal avatar
lá cờ us
@Tim Họ ở trong cùng một nhóm bảo mật, vâng. Tôi đã thay đổi điều đó bây giờ nhưng nó vẫn không hoạt động. Bạn có thể xem các bản cập nhật tôi đã đăng không?
Tim avatar
lá cờ gp
Tim
Tôi thấy các nhóm bảo mật của bạn ổn, mặc dù tôi không thể kiểm tra những thứ như ID. Hai việc cần làm 1) Bật nhật ký truy cập trên ALB và nhắm mục tiêu và kiểm tra xem các yêu cầu có đến ALB và máy chủ không - nếu dễ dàng hơn, bạn có thể cài đặt máy chủ web tiêu chuẩn trên cổng 80 để thử nghiệm. Sau đó, khi đã xong 2) Chỉnh sửa bài đăng của bạn để hiển thị các phần quan trọng của cấu hình ALB.
Debabrata Mondal avatar
lá cờ us
@Tim Tôi đã chỉnh sửa bài đăng. Bạn có cần bất kỳ thông tin khác?
Tim avatar
lá cờ gp
Tim
Đọc bình luận cuối cùng của tôi một lần nữa. Không chỉ cung cấp cho chúng tôi nhật ký, bạn cần hiểu chúng, kiểm tra nhật ký trên máy chủ web và đảm bảo yêu cầu được thông qua.Nếu không, bạn có thể thiết lập Nginx/Apache và dùng thử với một giao thức được hiểu rộng rãi hơn để kiểm tra xem mọi thứ có hoạt động bình thường không. Tôi nghĩ tốt nhất bạn nên nhờ một chuyên gia vào, chúng tôi có thể trợ giúp nhưng tôi nghĩ bạn cần trợ giúp nhiều hơn những gì chúng tôi có thể cung cấp.
lá cờ cn
ALB SG của bạn chỉ cho phép cổng 8080 gửi đi đến một SG khác - nó sẽ không thể gửi phản hồi cho khách hàng của bạn. Hãy xóa quy tắc gửi đi và tập trung vào các quy tắc gửi đến ngay bây giờ - các nhóm bảo mật có trạng thái nên việc gửi đi là không cần thiết và làm tăng thêm sự phức tạp.
Debabrata Mondal avatar
lá cờ us
Cảm ơn bạn @ shearn89 rất có ý nghĩa!
Điểm:0
lá cờ cn

Chỉ cần sao chép và dán nhận xét của tôi vào câu trả lời trong trường hợp nó giải quyết được vấn đề.

ALB SG chỉ cho phép cổng 8080 xuất phát sang một SG khác. Điều này có nghĩa là nó sẽ không thể gửi phản hồi cho máy khách, ứng dụng này sẽ lắng nghe trên một số cổng ngẫu nhiên không phải là 8080. Cách tốt nhất là loại bỏ các quy tắc gửi đi và tập trung vào các quy tắc gửi đến - các nhóm bảo mật có trạng thái nên các quy tắc gửi đi không nhất thiết phải có và thêm phức tạp!

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.