해결된 질문
작성
·
72
·
수정됨
0
안녕하세요 강사님! 항상 강의로 재미있게 공부하고 있습니다! 다름이 아니라 ACM으로 SSL 인증서를 적용하면 로드밸런서의 리스너 규칙을 HTTPS 만 허용하고 HTTP 리스너는 404 응답을 보내게 설정해도 되는 걸까요?
로드밸런서 리스너 규칙
HTTPS
HTTP
이렇게 하려는 이유는 기존 HTTP 리스너만 있는 상태에서 웹소켓으로 통신을 하려고 하는데, 프론트에서 HTTPS로 웹소켓 연결 요청을 보내게 되면, "Handshake failed due to invalid Upgrade header: null" 이런 에러가 뜨더라고요!
그래서 찾아본 결과 ALB가 리버스 프록시로서 HTTP 요청을 HTTPS로 리다이렉션 하는 과정에서 WebSocket upgrade 헤더 손실이 발생한다고 하더라고요!(이게 맞는 내용일까요..?) 아직 에러를 해결하는 중이라 이게 정답인지 아닌지는 아직 잘 모르겠지만.. 이런 문제로 HTTPS 리스너를 추가해 보려고 합니다! 그리고 하는 김에 보안강화를 위해 HTTP는 404응답, HTTPS 요청만 허용해 보려고 하는데 이렇게 해도 되는 걸까요?
+ 추가로 이렇게 되면 ALB 보안그룹의 인바운드를 HTTPS를 허용하면 되는 거겠죠?!
답변 2
1
안녕하시요 Hephaestus님~
오후에 일정이 있어 답변 늦게 드려 죄송합니다!
우선 질문해주신 404설정은 wss로 웹소켓 연결시에는 443 https 로 연결하고, 80 http 포트를 404로 반환하는 설정을 하셔도 문제는 없습니다!
만약 http 로 ws 연결을 하려고 하실 땐 로드밸런서의 http to https 리다이렉트 설정을 하지 않으면 이론상으론 될거라 생각합니다.(직접 확인해보지는 못해 이렇게만 말씀드린전 죄송합니다)
마지막 질문에 답변을 드리면 wss를 의해 https 사용시엔 http로 설정됐던 보안그룹 설정을 https 로 바꿔주시면 문제없이 동작할것입니다!
마지막으로 한마디만 덧붙이자면, 이후 강의에서 api gateway를 사용하는 내용이 있습니다. 이때 해당 게이트웨이로는 ws연결이 되지않기때문에 추가적으로 websocket api를 사용해야할 수 있습니다!
강의 수강해주셔서 감사합니다. 추가적인 궁금증 또는 문제가 있으시면 언제든 문의남겨주세요! 😀
0
안녕하세요, 인프런 AI 인턴입니다. Hephaestus님.
로드밸런서의 리스너 규칙 설정 관련 질문에 대해 안내 드리겠습니다. 현재 설정하고자 하시는 내용은 HTTPS만 허용하고 HTTP 요청은 404 응답을 반환하도록 구성하는 것입니다. 이는 보안 강화를 위해 일반적으로 많이 사용되는 방식으로, HTTPS 를 통해서만 데이터를 전송하여 보안을 유지하겠다는 의도를 가지고 있습니다.
지금 접하고 있는 문제에 대한 분석 및 해결 방법:
HTTPS 리다이렉션 문제:
HTTP 리다이렉션 설정:
완전 HTTPS 지원:
관련 문서 및 사례:
- AWS ALB Listener Configuration: ALB에서 리스너를 어떻게 설정할 수 있는지 관련 문서입니다.
- WebSocket over HTTPS 설정 관련 대화”, Stack Overflow의 유사한 사례.
HTTPS로만 리스너를 구성하면서 WebSocket을 유지하려면, WebSocket 요청이 SSL/TLS로 직접 처리되도록 해야 합니다. 예를 들어 웹소켓 지원을 위한 특정 경로나 포트를 허용하는 방식이 있습니다. 설정을 조정하면서 이 문제를 해결해 보시기 바랍니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
아..! 일반 API를 사용하려면 HTTP 리스너가 있어야 하네요..!
[일반 API 요청] HTTPS -> API Gateway(SSL 처리) -> HTTP -> ALB -> 백엔드
[WebSocket 요청] HTTPS/WSS -> ALB(SSL 처리) -> WS -> 백엔드
이런 식으로 작동하는 게 맞을까요?
HTTPS 웹소켓(stomp, sockJS) 문제 해결했습니다! 에러는 DNS 조회를 실패하는 것 때문이더라고요!
그래서 Route53의 레코드를 API Gateway로 보내지 말고 로드밸런서로 바로 보내고 로드밸런서에서 HTTPS 리스너를 이용해 SSL 인증서를 적용했더니 정상적으로 작동합니다!
그래서 지금 저의 ALB 리스너 규칙은 HTTP 리스너 제거, HTTPS로 모든 경로를 허용했는데(ALB 보안 그룹의 인바운드도 HTTPS만 허용), 이렇게 되면 강의에서 사용한 API Gateway는 저의 아키텍처에서는 이제 사용 안 하는 것 같은데 제거해도 될까요?
추가로 이전의 제 아키텍처는 강의와 똑같은 설계했었는데, 웹소켓(stomp, sockJS) 연결을 할 때 DNS를 찾지 못한 이유가 HTTP API Gateway가 웹소켓을 인식을 못 해 발생한 문제였을까요?