[TIL 0503] 네트워크와 트러블슈팅 / HTTPS 배포 실습

zitto·2023년 5월 8일
0

TIL

목록 보기
75/77
post-thumbnail

💡 와이어샤크(SSL과 HTTPS)

실시간 네트워크 분석을 위해 패킷 교환 과정을 포착하는 도구 중 하나


패킷이란?

네트워크상에서 주고받는 메시지 데이터 블록의 기본 단위를 패킷 이라 부른다.

80번 포트(http)와 443번 포트(https를)
이 포트 번호들은 생략이 가능!


왜 https를 사용해야 할까?

‘ loginUserExample ‘ 이라는 요청을 보낼 때 입력한 이메일과 패스워드가 쉽게 노출되는 것을 볼 수 있다.

3-way-handshake , 4-way-handshake
왼쪽이 프론트엔드, 오른쪽이 백엔드 컴퓨터라 가정해보자.

  • 프론트 엔드 컴퓨터에서 백엔드 컴퓨터로 요청을 보내는 것 : ‘SYN’
  • 백엔드 컴퓨터에서 프론트엔드 컴퓨터로 요청에 대한 응답: ‘SYN + ACK’
  • 다시 프론트엔드 컴퓨터에서 백엔드 컴퓨터로 ‘ACK’를 돌려줌.
  • 연결을 종료할 때에는 ‘FIN’을 돌려주면서 4-way-handshake 형식이 된다.

프론트엔드 개발자라도 와이어샤크에 관심을 가져야 한다.
백엔드 개발자들과 어떻게 데이터를 주고받는지 알아야 협업을 하는데 있어서 원할하게 진행을 할 수 있음!


💡 HTTPS 배포 실습

✅ SSL 인증서 발급

HTTPS는 SSL/TLS 인증서가 있어야 사용할 수 있다.
AWS에서는 웹서비스 제작을 위해 필요한 기본적인 퍼블릭 인증서를 무료로 제공하고 있다.

  1. 콘솔 상단의 ‘서비스' 또는 검색창에서 Certificate Manager를 찾아 접속한 뒤, 시작하기 버튼을 클릭
  2. 퍼블릭 인증서 요청을 선택한 뒤, 다음으로 넘어간다.
  3. 도메인 이름에 미리 구매했던 도메인을 입력(http://나 www는 입력하지 않습니다)하고, DNS 검증을 선택한 다음 요청 버튼을 클릭
  4. 발급 요청이 완료되었지만, 아직 DNS 검증을 완료하지 않았기 때문에 검증 대기 중으로 표시된다.

✅ SSL 인증서 검증

AWS에서는 SSL 인증서가 무분별하게 사용되는 것을 방지하기 위하여 도메인에 맞는 인증서를 발급한 다음, 실제로 해당 도메인을 소유하고 있는 지 검증하여야 활성 상태로 변경한다.
Route53에 검증용 CNAME 레코드를 추가하여 도메인 소유 여부를 검증할 수 있다.

  1. DNS 검증을 위해 인증서 ID를 클릭
  2. Route 53에서 레코드 생성 버튼을 클릭
  3. 레코드 생성 버튼을 클릭
  4. Route 53으로 이동하여 여러분이 생성한 호스팅 영역의 레코드 목록을 보면, CNAME 레코드가 생성된 것을 확인할 수 있다.
  5. 연결 확인을 위해 ACM에서 인증서 정보를 조회한 다음, CNAME 이름을 복사
  6. 터미널에서 dig (CNAME 이름) CNAME 을 입력
  7. ANSWER SECTION에 CNAME 이름과 CNAME 값이 모두 표시되면 연결이 완료된 것(확인이 완료될 때까지 시간이 다소 소요된다.)
  8. CNAME 확인이 완료되면, 인증서 상태가 발급됨으로 변경된다.

✅ CloudFront 배포 생성 및 인증서 적용

유저의 접속 트래픽은 가장 먼저 CloudFront에 도달하여 S3과 로드밸런서 중 어느 곳으로 데이터를 요청할 지 분류를 받게 된다. 또한, CloudFront는 전세계에 위치한 AWS 서버들을 이용하여 CDN 서비스를 제공한다.

CDN 서비스를 이용하여 유저는 전세계 어디서든 빠른 속도로 컨텐츠를 전송받을 수 있고, 일부 리전의 접속이 원활하지 않거나 서버가 다운되었을 때 캐싱된 페이지를 조회할 수 있도록 하여, 서버가 중단된 상황에서도 일부 서비스에만 장애가 발생한 것과 같이 보이도록 한다.

  1. aws 콘솔 상단의 ‘서비스' 또는 검색창에서 CloudFront를 찾아 접속한 뒤, 시작하기 버튼을 클릭
  2. 원본 도메인에 S3 엔드포인트 주소를 반드시 직접 복사하여 입력한다. Origin Shield 활성화는 아니요를 선택한다. (입력창 클릭 시 자동으로 검색되는 원본 도메인을 선택할 경우 S3과 제대로 연결되지 않는다.)
  3. 뷰어 프로토콜 정책 및 허용된 HTTP 방법을 아래와 같이 선택
  4. 대체 도메인 이름 영역에서 항목 추가 버튼을 클릭
  5. 대체 도메인 이름에 구입한 도메인을 입력한 다음, 사용자 정의 SSL 인증서 선택창을 클릭
  6. 인증서를 선택한 다음 배포 생성 버튼을 클릭
  7. 배포 도메인 이름을 복사
  8. 주소창에 입력하고, 제대로 페이지가 표시되는 지 확인한다 (시간이 다소 소요된다)

✅ Route 53과 CloudFront 연결

Route 53과 CloudFront를 연결하여, 유저가 도메인을 입력하면 https를 이용하여 S3에 접속할 수 있도록 설정해 보자!

  1. aws 콘솔 상단의 ‘서비스' 또는 검색창에서 Route 53을 찾아 접속한 뒤, 호스팅 영역 버튼을 클릭
  2. 기존에 생성했던 호스팅 영역을 클릭
  3. 도메인-S3엔드포인트를 연결하였던 A 레코드를 선택하고, 레코드 편집 버튼을 클릭
  4. 트래픽 라우팅 대상을 변경하기 위해 S3 웹사이트 엔드포인트에 대한 별칭을 클릭
  5. CloudFront 배포에 대한 별칭을 선택하여 트래픽 라우팅 대상을 변경
  6. 대상 CloudFront 배포를 지정하기 위해 배포 선택창을 클릭
  7. 이전에 생성한 CloudFront 배포 도메인을 선택
  8. 저장 버튼을 클릭
  9. 구입한 도메인을 주소창에 입력하여 HTTPS 연결을 확인

무료와파사용하지 않기
http가급적 피하기

유지시간(keepalive)
http1.1 과 http1.0의 차이

방화벽 이해

CS퀴즈

💡



1단계
cdn설치하기 content delivery network
실습

버킷의 속성에서 복사하기 - 원본도메인
실프로젝트에서는 캐시해야함

방화벽해제
접속해도 안되는 이유는?
배포했지만
바로 접속되지 않고
방화벽이라는 것이 겉에서 각 포트별로 막고 있음.
방화벽을 풀어서 누구둔지 접근이 가능핟로고 해야함.

로드밸런스연결하기

yarn start켜져있는상태에서 로밸하기

profile
JUST DO WHATEVER

0개의 댓글