SSL 적용 및 TroubleShooting

성찬홍·2023년 6월 25일
0

TroubleShooting

목록 보기
3/4

목차

  1. SSL(HTTPS)을 적용해야되는 이유
  2. SSL 실전 적용
  3. 문제 발생
  4. 시도 방법 및 해결
  5. 느낀점

SSL(HTTPS)을 적용해야되는 이유

1) SSL이란

  • 웹 서버와 클라이언트의 통신 암호화 프로토콜이다.
  • SSL은 '보안 계층'이라는 독립적인 프로토콜을 계층을 만들어, 응용 계층과 전송 계층 사이에 속하게 된다.(TLS는 SSL의 후속 버전으로 , 일반적으로 SSL이 더 많이 사용되는 용어이다.)
  • HTTPS 뒤에 붙은 'S'는 보안(Secure)을 나타낸다.
  • HTTPS는 SSL 또는 TLS 위에 HTTP 프로토콜을 얹어 보안된 HTTP 통신을 하는 프로토콜이다. 즉 SSL과 TLS는 HTTP 뿐만 아니라 ,HTP,SMTP와 같이 다른 프로토콜에도 적용할 수 있다.

2) SSL을 사용하는 이유

  • SSL이 적용되지 않은 통신의 경우, 위 그림과 같이 평문이 그대로 전송된다.
    제 3자가 이 통신 패킷을 탈취할 경우 내용을 쉽게 확인할 수 있으며, 통신 내용에 사용자의 개인 정보, 결제 정보 등의 정보가 들어있다면 문제가 발생할 수 있다.

SSL 실전 적용

1) 현재 배포 상황

  • 프론트 -> varcel에 배포(Next)
  • 백엔드 -> aws EC2에 배포 (node)

2) SSL(HTTPS) 적용 로직
: (varcel에서는 자동으로 HTTPS 적용이 되기에, EC2에 배포된 파일에 HTTPS를 적용해 보려한다.)

  • 무료 SSL 적용을 위해 let's encrypt 사용하자
  • let's encrypt에서 제공하는 certbot 설치
$ sudo apt update
$ sudo apt upgrade
$ sudo add-apt-repository ppa:certbot/certbot #certbot을 위한 저장소 추가
$ sudo apt install python3-certbot-nginx
  • NginX default 설정 파일에서 HTTPS를 적용할 server_name을 작성해준다.
$ sudo vi /etc/nginx/sites-available/default
// default 파일에 추가해줄 코드
server_name example.com www.example.com;
  • 설정을 완료한후, NginX를 재시작해준다.
$ sudo nginx -t // 변경사항이 잘 적용됐는지 확인
$ sudo service nginx reload //nginx 재시작
  • EC2의 HTTPS 보안 인바운드 규칙을 추가해준다.
    (보안 그룹 -> 인바운드 규칙 추가 -> 유형: HTTPS, 소스 anywhere -> 규칙 저장)
  • SSL 인증서 취득을 위해 , 아래 코드를 입력해준다.
$ sudo certbot --nginx -d example.com -d www.example.com
  • NginX를 재시작해준다.
  • 완료

발생한 문제

: 위 진행 과정에서 domain으로 적혀진, example.com에 SSL을 적용할 도메인을 입력해야합니다.
여기에 AWS EC2 배포시 제공하는 퍼플릭 IPv4 DNS를 사용하려고 했습니다.
그러나 진행과정에서, EC2 DNS는 certbot 사용을 막아두었다는 오류메세지를 받았습니다.

시도한 방법 및 해결 방법

  1. 실무에서는 필수로 HTTPS를 적용하겠지만,현재는 공부용으로 만드는 사이트이고 도메인이 따로 없는 상태이기에 추후 https를 적용하고 , SSL 적용 없이 EC2와 varcel을 연결하려고 했습니다.
  • 문제 발생 : varcel에서는 https가 자동으로 적용되있고, *백엔드에 api 요청을 하더라도 자동으로 https 형태로 요청이 변경되었습니다.
// ex
- 클라이언트에서 axios.(http://~~) 요청

- 크롬에서 확인한 주소(https://~~)

2. 무료 도메인 발급

  1. 도메인 발급을 완료한 후, 위 과정에 있는 SSL발급을 진행한다.

  2. 완료

느낀점

HTTPS를 적용하는 과정에서 과정에서 예상치 못한 오류를 받았습니다.
(1) 이 과정에서 varcer이 배포된 파일은 서버와 통신할 때 ,자동으로 https 보낸다는 것을 알 수 있었습니다.
(2) AWS EC2에서 제공되는 DNS certbot SSL 인증 적용에는 불가능하다는 것도 알 수 있었습니다.

SSL 적용은 정해진 방법대로 적용하는 것이기에, 금방 적용할 수 있을 것이라 생각했는데, 예상치 못한 오류를 받았고 이를 통해서 위의 두가지를 알 수 있게 되었습니다.
앞으로 접할 많은 오류들이 있겠지만, 하나하나 적립해나가면 좋을 것 같습니다.

profile
꾸준한 개발자

0개의 댓글