[AWS] EC2를 이용한 서버배포 - 7

PRG·2023년 8월 28일

AWS

목록 보기
7/7

나는 http://도메인:8080/~~이 아니라 https://도메인/~~ 에 요청을 보내고 싶다!

웹 사이트를 HTTP로 운영하고 싶지만 사용자의 정보같은 민감한 정보를 사용하게 될 경우에는 SSL 인증서를 사용한 보안처리가 필수적이다.

웹 서버에 SSL 인증서를 사용해 HTTPS로 서비스를 제공할 수 있도록 Nginx 프록시 서버에 SSL 인증서를 적용하는 방법을 적어보고자 한다.

사전정리

나는 Spring으로 서버를 배포하고 있으며 환경은 AWS Linux 2 AMI로 관리를 하고있다. 따라서 타 버전을 사용하고 있거나 이 문서를 먼저 확인한 경우 앞 포스팅들도 꼭 확인해 줬으면 한다.

Let's Encrypt 설치

HTTP를 HTTPS로 바꿔주는 과정에는 SSL 인증서가 필수적입니다.

SSL이란?

SSL(Secure Socket Layer)은 프로토콜 중 하나로서 인터넷 상에서 주고 받는 데이터를 보호하기 위해 필요하다. 보통 SSL과HTTPS 는 같은 것이 아닐까라는 생각을 하지만 아니다. 아래 그림을 보면

SSL과 HTTP는 인터넷과 웹으로 나뉘는 것을 볼 수 있다. 인터넷은 컴퓨터를 통해 정보를 주고 받는 네트워크라고 볼 수 있고, 웹은 인터넷을 통해 사용가능한 서비스이며 마찬가지로 HTTPS도 SSL프로토콜 위에서 돌아가는 프로토콜이라는 것이다. [Web] SSL 인증서에 대한 이해(사전 지식, 정의, 동작원리, 인증서 비교)
자세한 보안 방식과 설명은 아래 잘 정리해주신 분이 있어 놓아두었다.

그러면 이 SSL을 어떤 방식으로 적용할까?

여기서 Let's Encrypt 라는 것이 등장한다. SSL을 무료로 이용할 수 있는 오픈소스 인증서로써 유료 인증서 대신 작은 프로젝트들에서 사용할 수 있도록 공개한 것

거기에 Let's Encrypt 설치 및 업데이트를 쉽게 해주는 certbot이 등장하면서 더 쉽게 이용할 수 있도록 변화되었다.

certbot 설치

다음 내용들을 Putty를 열어 설치합니다.

sudo wget -r --no-parent -A 'epel-release-*.rpm' http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/
EPEL을 다운로드( Certbot에 필요한 종속성을 공급하는데 필요 )

sudo rpm -Uvh dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-*.rpm
리포지토리 패키지를 설치합니다.

sudo yum-config-manager --enable epel*
리포지토리 패키지도 설치가 완료되었다면, epel를 활성화

sudo yum install -y certbot python2-certbot-apache
sudo yum install certbot-nginx
다음 명령어들로 certbot을 설치합니다.

Nginx 설치

sudo yum install nginx
1. nginx 설치
sudo service nginx start
2. nginx 실행
ps -ef | grep nginx
3. nbinx 실행확인

다음의 과정이 모두 완료되었다면 -nignx 설정 파일에서 sever name과 proxy pass를 설정해주겠습니다.

sudo vi /etc/nginx/nginx.conf
또는
sudo vi /etc/nginx/conf.d/default.conf
를 입력합니다.

설정이 열린다면

1~2번 : 제 게시글을 따라오셨으면 알 수 있듯 www.도메인~ 과 도메인~을 입력해주시면 됩니다.
3번 : AWS의 탄력적 IP
4번 : 아래 프록시 세팅과 add_header 추가

4번의 경우 필요에 따라 작성하자 (없어도 됨)
Access-Control-Expose-Header은 내가 PostMan으로 정보를 보낼때 이 부분이 필요하니 당신은 이를 막지 말아주세요! 라고 설정해 둔것.


필자는 프로젝트에서 로그인시 두가지 토큰과 인증을 받기 때문에 이를 입력하여 항상 이를 사용할 수 있도록 설정하였다.

Let's Encrypt 적용

sudo certbot --nginx
입력해준다.

해당 명령어가 입력되면 서버 사용에 관련하여 이메일주소를 물어볼텐데
엔터를 통하여 확인해주고 Which names would you like to~ 라는 단어가 뜬다면 엔터만 눌러준다.

완료가 된다면 The new certficate~ 라는 문구를 보게될 것이다.

제대로 인증서가 발급되었는지 확인하고 싶다면

sudo certbot certificates
코드 입력을 통해

해당 인증서가 나온다면 성공이다.

참고

Amazon Linux2에서 Certbot을 통해 HTTPS 적용하기 (With. Nginx)

profile
돼지토끼기린과 연습하는 코딩 일지 / Pig Rabbit Giraffe 🐖🐇🦒 Coding

0개의 댓글