코드 캠프 36일차) HTTP와 HTTPS

민겸·2022년 10월 25일
0

코드캠프_FE09

목록 보기
25/28
  1. HTTPS / SSL / TLS
  2. EC2
  3. Load Balancer

HTTPS

HTTPS는 무엇이며, 왜 필요한가?

WireShark

네트워크 패킷

네트워크 Source는 출발지를 의미함. 약자로 src
도착지는 Destination 약자로 dst

Port Number ( 0 ~ 65535 중 랜덤으로 배정받는다. )
localhost -> 3000
http -> 80
https -> 443

네이버는 https 이므로, naver.com:443 이다. 원래는 도메인 바로 뒤에 붙어있지만, 생략되어있는 것이다. 다른 포트 번호로 접근한다면 접속이 되지 않는다. 직접 시도해봐도 좋을 듯 하다.

HTTP 로 접속한 뒤 로그인 했을 때를 와이어 샤크로 살펴보자.

와이어샤크를 통해 조금만 뒤져보면 이렇게 아이디 비밀번호가 그대로 노출되는 것을 볼 수 있다. 아이디 비밀번호 뿐만 아니라 웹 서핑하는 모든 것이 노출된다.

HTTPS 로 접속한 뒤 로그인 했을 때를 와이어 샤크로 살펴보자.Encrypted(암호화)가 설정되어있는 것을 볼 수 있다.

HTTPS를 적용하기 위해서는 SSL 인증서를 구매 후 적용시키면 되는데, 유/무료 둘 다 있다.

SSL이란 Secure Socket Layer의 약자이다.
SSL은 예전에 업그레이드를 하여 TLS가 되었는데 SSL이 익숙하다보니 SSL 인증서라고들 많이 말한다. 위의 이미지만 보아도 TLS라고 적혀있는 것을 확인할 수 있다.

3-Way-Handshake

클라이언트와 서버 간의 요청/응답 전에 연결을 시도하는 과정이 있는데, 이를 3-Way-Handshake라 부른다.

  1. 클라이언트는 서버 쪽으로 연결 가능 여부를 묻는 SYN 패킷을 보낸다.
  2. 서버는 승인으로 SYN + ACK 패킷을 보낸다.
  3. 클라이언트는 승인을 받아서 연결을 시도한다는 뜻의 ACK 패킷을 보낸다.

이 작업들 이후에 request를 보내게 된다. 그럼 매 요청 마다 이렇게 하느냐? 그건 아니다. 한 번 연결을 해놓으면
유효 시간이 생기는데, 이 유효 시간이 지나면 연결을 종료시킨다. 연결을 종료할 때 연결 시도할 때 사용되었던 패킷들에 FIN 이라는 패킷을 포함시켜서 4-Way-HandShake 과정을 거치게 된다.

백엔드가 혼잡할 땐, ECN, CWR 과 같은 패킷을 보내는데, ECN은 Explicit Congestion Notification의 약자로 혼잡도를 알려주는 패킷이고, CWR은 Congestion Window Reduced의 약자로 보내는 신호의 양을 줄이겠다는 의미이다.

이런 상황일 때, 보통 패킷 캡쳐(한다고 말한다.) 후 트러블 슈팅을 진행한다.

프론트 엔드 서버에 SSL을 직접적으로 설치할 수 있는데, certbot이라는 것을 따로 설치해줘야 한다. 검색해보면 나오는데 보면 알다시피 조금 복잡하다.

클라우드에서는 이 SSL 설치를 두 가지 방법으로 할 수 있는데 첫 번째로는 로드 밸런서에 할 수 있다. 버튼 클릭 한 번이면 충분하다.
두 번째로는 로드 밸런서에 가기 전, 정적/동적 페이지의 분기가 되는 CDN에 설치하는 방법이 있다.

인증서를 설치하기 전에 알아둬야 할 점이 하나 있다.

CDN이란?

CDN은 Contents Delivery Network의 약자로 인터넷 콘텐츠를 고속 전송하는 지리적으로 분산된 서버 집단을 의미한다. CDN은 서버와 사용자 간의 물리적 거리를 줄여 콘텐츠 로딩에 소요되는 시간을 최소화 해주는 역할을 한다.

SSL 인증서는 리전을 default 지역으로 설정해서 설치해야만 CDN에 적용된다. 클라우드에서 SSL 인증서를 만들 때도 적혀있다. 작은 글씨도 놓치지 말고 읽어보자!요청하면 pending 상태가 되는데 본인의 사이트를 인증하라는 의미로 레코드가 나온다. 나는 Route53에 SSL을 설치할 것이므로 위의 간편 제작 버튼을 통해 인증해주면 된다.

EC2 탭에서 컴퓨터 대여하기

EC2 에서는 서울 리전으로 바꾼다.

버튼 몇 번 클릭하면 무료로 컴퓨터를 빌릴 수 있다.

yarn install --production
dev-dependencies에 있는 모듈들은 설치되지 않는다.

VM 즉, EC2 를 만들었다면 터미널을 열어서 git을 설치한 뒤, 배포하고 싶은 프로젝트를 clone 해서 yarn install --production > yarn build > yarn start 를 해주면 웹 사이트 배포가 끝난다.

Load Balancer 와 targetGroup을 합쳐서 VPC(Virtual Private Cloud)라고 한다.

방화벽 푸는 법 기억하기 Inbound rules add


dig -> DNS Query

bcrypt 암호화 라이브러리 -> 단방향 암호화 (해시) (백엔드와 DB 사이에서 많이 사용됨) (복호화 불가능)

crypto 암호화 라이브러리 -> 양방향 암호화 (프론트와 백 사이에서 많이 사용됨)

graphql 요청 options으로 preflight를 먼저 날린 뒤, 본 요청을 보낸다?

동적 파일 -> yarn dev 24시간

profile
기술부채상환중...

0개의 댓글