https 와 얼마나 수없이 싸운지 모르겠다..
이번에 회원가입이 있는 서비스라면 SSL 인증이 법적으로 필수라는 것을 알게되었다.
이를 위반하면 3천만원 이하의 벌금이라고 한다.. SSL 이젠 진짜 필수로 하겠다..!!
HTTPS 에 대한 개념은 생략...
EC2에 올린 서버가 https 통신을 하려면 다음과 같은 일련의 과정이 필요하다.
1. 도메인 구매
2. IP 와 연결
3. 인증서 발급 후 서버에 적용( Let's Encrypt.. 등)
단계는 3개뿐이지만.. 그리고 사실 별것도 없긴 하지만, 아주 귀찮은 녀석이다.
또 프로덕션으로 배포하려면 트래픽부하도 고려해야하니
이 두가지를 바로 잡아주는 것이 로드밸런서 이다.
EC2 메뉴에 들어가서 좌측 사이드 바에서 확인할 수 있는데, 로드밸런서와 대상 그룹을 생성해주어야한다.
먼저 로드밸런서를 생성하는데
리스너 부분을 80포트, 443 포트를 설정하고 대상 그룹으로 연결지어준다.
(이때 80포트는 443 포트로 리다이렉트 시키도록해서 https 프로토콜만 사용하도록 강제한다)
이때 대상그룹이 없다면 새성하는 버튼이 나온다.
대상 그룹은 EC2를 지정하는 것이다.
로드밸런서를 지정할 EC2를 선택하면된다.
흐름
[기존]
사용자 -> EC2
[변경]
사용자 -> 로드밸런서 DNS -> EC2
흐름은 위와 같이 변했다.
로드밸런서로 EC2에 접근하면 로드밸런싱의 모든 효과를 누릴 수 있다.
트래픽이 많아지면 분산처리를 하고, 인스턴스를 더 생성하고 등등 ...
공짜로 DNS도 준다! (물론 실제로 쓰진 못하겠지만, 난잡해서)
이제 이 DNS를 원하는 도메인을 구매해서 연결하고, AWS ACM에서 인증서를 생성한다.
인증서는 무료로 발급받을 수 있고, AWS 53에서 DNS 등록을 한 도메인에 적용할 수 있다.
그러면 EC2서버 자체는 http 통신을 지원하지만, 이제는 도메인(ACM 적용) -> 로드밸런서 -> EC2 를 통해서 http통신이 이루어지기 때문에, SSL인증을 거쳐서 접속된다.
로드밸런서도 그렇고 다른 AWS 서비스들도 마찬가지로 처음에 큰 흐름을 캐치하는게 어렵다. 생소한 단어들이고, 이제는 단순히 서버만 돌리면 안된다는 것을 깨닳았을 때 다들 접하지 않을까싶다. 나같은 경우에는 실제서비스를 배포하다보니 보안관련되서 계속 공부하고 적용하다가 보니 여기까지 오게되었다. 이거하려고 삽질을 한 4시간은 넘게한거 같다.. 나중에 기회가 된다면 다시 촘촘히 정리해봐야겠다.
'Archive' 카테고리의 다른 글
React 번들링과 Lazy Loading (0) | 2022.06.30 |
---|---|
React 에서 map을 사용할때 Key 값으로 index를 사용하면 안되는 이유 (0) | 2022.06.30 |
Jest 와 TDD (0) | 2022.06.19 |
JS로 css 변수 다루기 (0) | 2022.06.16 |
ERROR 2002 (HY000): Can't connect to local server through socket '/run/mysqld/mysqld.sock' (2) (0) | 2022.06.14 |