AWS

[ SpringBoot & JPA 프로젝트 ] HTTP => HTTPS / AWS 로드밸런서, 타겟그룹, ACM

sian han 2022. 10. 3. 19:26

변경하기 전 HTTP 와 HTTPS 의 차이점 알기

 

▶ HTTP 

  - Hyper Text Transfer Protocol : 서버 / 클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜

  - 인터넷에서 하이퍼텍스트를 교환하기 위한 통신규약

      하이퍼텍스트(hypertext)

      일반 텍스트와 달리 문장이나 단어 등이 링크를 통해 서로 연결된 네트워크처럼 구성된 문서를 말한다

 - 80번 포트를 사용하고 있다

 

 

 

▶ HTTPS

  - Hyper Text Transfer Protocol Secure : HTTP에 데이터 암호화가 추가된 프로토콜

  - 443번 포트를 사용 

  - HTTPS 프로토콜은 SSL 을 사용함으로서 데이터가 제 3자에게 노출될 수 있는 문제를 해결했다. 

 

SSL (소켓 계층 보안) : 서버와 브라우저 사이에 안전하게 암호화된 연결을 만들 수 있게 도와주고 서버 브라우저가 민감한 정보를 주고받을 때 이것이 도난당하는 것을 막아준다

 

▷ TSL (전송 계층 보안) : 데이터 무결성 - 데이터가 전송중에 수정되거나 손상되는 것을 방지하고 사용자가 자신이 의도하는 웹사이트와 통신하고 있음을 입증하는 인증기능도 제공함 

 

 

☞ HTTP 는 암호화가 되지 않은 평문 데이터를 전송하는 프로토콜이기 때문에 제 3자가 정보를 조회할 수 있지만

     HTTPS 는 네트워크 상에서 중간에 제 3자가 정보를 볼 수 없도록 암호화를 지원하고 있기때문에

     고객의 개인정보를 보관하고 전자상거래가 이뤄지는 웹사이트 뜨개장터에 보안을 추가하기로 했다

 


 

이미 돌아가고있는 EC2 서버에 Https 를 적용 시키는 예제이다.

따라서 Route53 에서 '레코드 추가' 하지 않고 존재하는 레코드를 수정한다는 점이 다르다. 

 

 

AWS 공식문서를 참고했다

 

 

Application Load Balancer를 사용하여 HTTP를 HTTPS로 리디렉션

Application Load Balancer를 사용하여 HTTP 요청을 HTTPS로 리디렉션하려면 어떻게 해야 하나요? 최종 업데이트 날짜: 2022년 7월 8일 Application Load Balancer 리스너 규칙을 사용하여 HTTP 요청을 HTTPS로 리디렉

aws.amazon.com

 

순서는 다음과 같다

 

  •  AWS Certificate Manager 을 통해 SSL/TLS 인증서 발급
  • 로드 밸런싱 생성 (ACM 에서 발급받은 인증서가 있어야 됨)
  • 대상 그룹 (Target Group) 생성
  • 리스너 추가 ( 80 & 443 Port )
  • 리스너 규칙 추가
  • Route53 레코드 편집 (추가X)

 

 

과정들은 세세하게 캡쳐해두지 않았기 때문에

참고하면 좋은 블로그 링크를 첨부함

 

 

[AWS] ALB(Application Load Balancer) 사용하기 (Feat, SSL 설정)

안녕하세요. J4J입니다. 이번 포스팅은 ALB 사용하는 방법에 대해 적어보는 시간을 가져보려고 합니다. ALB란? ALB는 Application Load Balancer라는 뜻으로 어플리케이션에서 사용되는 여러 대의 서버들의

jforj.tistory.com

 

 

프로젝트 관리2 - AWS에서 SSL인증 발급하고 등록하기

완성된 사이트 보러가기

devham76.github.io

 

 

 

 


 

삽질로그

 

▶ 로드 밸런서 리스너 규칙추가

 - 규칙을 어떻게 추가하라는 건지 명시되어있는 블로그를 찾기가 힘들었음. 

 - http 규칙에 https 로 리다이렉션 하도록 규칙추가

 - 타켓그룹을 만든 후 443 https 규칙에 추가해주면 됨

80 포트 리스너 규칙
443 포트 리스너 편집

 

 

▶ 서브넷 편집 (가용영역 check)

 

블로그 + aws 공식문서를 참고하면서 끝까지 마쳤는데

도메인에 접속하니 아래와 같은 화면이 떴다 . . . 

 

 

이런 화면도 떴다 . . . 

두려움이 엄습하고 그냥 보안 엉망인 웹사이트로 마무리 짓자 싶어서

되돌리기를 시도해봤으나

이미 너무 많은 길을 와서 어디를 어떻게 고쳐야 되돌릴수있는지 모르겠었다

 

나의 뜨개장터가 '작동했었던' 사이트가 될까봐 .. . 무서웠다

 

되돌아 갈 수 없는 강을 건넜으니

HTTPS  무족건 진행시켜야한다 . !! 

 

 

 

 

 

AWS 사이트 참고해서 503 오류를 확인해보니 

로드밸런서의 대상그룹에 등록된 대상이 없어서 발생하는 오류라고 한다.

 

 

 

?? 등록되어있는데 ㅠ

뭐가 문젤까 ... 그저 쳐다보다가

상태확인 unused 가 매우 거슬렸다

 

 

 

다시 AWS 문서에서 서치해보니

상태 unused 

대상이 대상 그룹에 등록되어있지 않거나,

대상 그룹이 리스너 규칙에서 사용되지 않거나,

대상이 활성화되지 않은 가용영역에 있거나,

대상이 중지 상태 또는 종료상태입니다.

 

나의 경우엔 3번 활성화되지않은 가용영역에 있어서 상태가 unused 였던거고,

그래서 등록된 대상에는 인스턴스가 확인되지만 실제로 인식은 안되고 있던 것이다.

 

 

 

 

로드밸런서 탭에 들어가서

생성된 로드밸런서를 클릭 > 작업 > 서브넷 편집에서 가용영역 편집이 가능하다

 

 

 

서브넷 편집 후 상태가 unused => healthy 로 변경되었다.

 

 

 

 

 보안그룹 이슈

위의 것을 해결하고나니

그래도 좀 덜 무섭고 익숙한 화면을 마주하게되었다

 

이건 뭔가 .. . .. 보안 그룹 문제다 !!! 

생각이 들어서 보안그룹을 두번세번뜯어봐도 

8개의 인바운드 규칙에서 오류를 찾을 수가 없었다

 

 

내가 한가지 잊고있었던건

로드밸런서에도 보안그룹을 추가해놨었던 것 !!

 

 

왜 오류가 난것이냐면

EC2 인스턴스의 보안그룹은 8개의 인바운드 규칙으로 이뤄져있는데,

로드밸런서를 생성하면서 함께 생성하고 추가한 보안그룹은 단 2개

8080 Anywhere, 443 Anywhere 이었다.

 

결론적으로 인스턴스의 보안그룹보다 로드밸런서의 보안그룹 범위가 높아서 .. ! (혹은 달라서)

오류가 발생한 것으로 추측된다

 

결론적으로 로드밸런서의 보안그룹 편집 버튼을 클릭해

EC2 인스턴스의 보안그룹과 동일하게 설정해놓으니 해결되었다.

 

 

저 깜찍한 locker 를 보시라 . . !!!

 

근데 edge 로 접속하면

저따위로 나옴 참내

기분이 아주 나뻐요

 

머 가 문제일 가 ? ... 

난 더이상 해결할 힘이 남.지 않았는걸 ..

 

일단 해결하기 전까지 크롬으로만 접속해야겠어요

앙증 자물쇠를 보면 기분이 조으니까요 ~~~ 

 


++ 2022.10.23

뭐에 심술이 났는지모르겠지만

 

2n번째 배포 후 사이트 접속 시 이런 에러가 발생함..

cert_common_name_invalid

 

오류가 발생했는데, 수정 후 배포를 본가 강원도에서 했다.

기존엔 계속 서울 집이나 스터디 카페 IP 로 배포하다가, 강원도 카페 IP 로 배포를 해서 오류가 난 것 같은데

정확히 어떤 부분에서 문제가 발생한건지 구글링을 해도 알 수가 없다. 

 

그래도

cert_common_name_invalid 는 봤었던 메세지라서

저번에 문제점을 찾아낸대로 AWS 로드밸런서 타켓을 체크해봤다.

 

 

역시 unhealthy 라고 표기되어있다.

이걸 어떻게 해결하면 좋을까 생각하다가 일단 삭제하고 재등록을 해보기로 한다.

 

삭제하고 재등록하니까 사이트가 정상적으로 작동된다.