본문 바로가기
서버/환경설정

[서버 개발 환경 구축] 7. Let's Encrypt를 이용하여 Nginx에 HTTPS 적용하기, http https 리다이렉트

by 베어 그릴스 2022. 7. 14.
320x100

지금 우리의 서버는 https로 접근이 안된다. 즉, 보안에 매우 취약한 것을 알 수 있다. 

Let's Encrypt를 이용하여 우리 도메인에 http가 아닌 https를 적용해보자.

 

 

certbot 설치


Let's Encrpt를 사용하여 SSL 인증서를 얻을건데, 이를 위해 certbot을 다운하여야한다.

우선 업데이트 해주고,

sudo apt update

 

certbot 저장소를 따로 만들어준다.

sudo add-apt-repository ppa:certbot/certbot


sudo add-apt-repository -r ppa:certbot/certbot #does not have Release file 오류가 난다면 시도해볼 것

여기서부터 Ubuntu 버젼 차이로 인한 오류가 굉장히 많이 난다.

 

자신의 OS에 따른 설치법은 아래에서 확인할 수 있다.

https://certbot.eff.org/

 

Certbot

Tagline

certbot.eff.org

 

각설하고, 나는 does not have Release file 오류가 나서 두번째 명령어를 실행하였다.

 

이후 다시 update 해주어야한다.

sudo apt update

이제  certbot을 다운할 차례이다.

sudo apt install python-certbot-nginx

sudo apt install python3-certbot-nginx #Unalbe to locate package ~ 나올 시 시도해볼 것

마찬가지로 다운받을 수 없다는 오류(Unable to locate package~)가 나오면 python3-certbot-nginx를 다운해준다.

 

 

2. Nginx 설정 파일 변경


certbot을 사용하기 위해선 nginx 설정파일의 server_name을 우리가 사용한 도메인 명으로 변경하여야만 한다.

 

vi로 설정파일을 열어주자

sudo vi /etc/nginx/sites-available/default

 

server_name에 우리가 사용한 도메인 명을 넣어주도록 하자

 

sudo service nginx restart

설정파일을 변경했으니 당연히 nginx도 재실행 시켜준다.

 

이제 우리는 HTTP가 아닌 HTTPS로 접근할 것이다. HTTP와 HTTPS의 포트 번호는 다르다. 이 말은 즉슨, AWS EC2의 인바운드 큐칙에서 HTTPS 포트를 열어주어야한다.

 

바로 추가해주도록 하자.

 

이제 SSL 인증서를 받을 준비가 끝났다.

sudo certbot --nginx -d example.com -d www.example.com

SSL 인증서를 받을 수 있는 명령어를 입력해주고,

 

이메일을 입력해주자.

 

이제 등록이 완료되었을 것이다.

 

허나 Let's Encrypt의 인증서는 90일 동안 유효하기 때문데 갱신이 필요한데 이를 자동 갱신하기 위해 다음 명령어를 입력해주자.

sudo certbot renew --dry-run

 

자 이제, https://를 앞에 붙이고 도메인에 접근해주면?

다음과 같이 https로 접근이 잘 된 것을 볼 수 있다.

 

 

HTTP Redirect to HTTPS


그러나 http로 똑같이 다시 접근해보면 아직도 보안이 좋지 않은 http 접근이 되는 것을 알 수 있다.

 

Nginx설정 파일을 통해 http로 접속해도 https로 접근되게끔 바꾸어 주자

 

sudo vi /etc/nginx/sites-available/default

설정파일로 우선 가보도록 하자.

 

보면 원래 쓰던 server block이 http가 아니라 https 접근 server block으로 바뀌어 있는 것을 알 수 있다.

 

listen이 해당 포트로 접근 시 해당 server block에 접근하게 해주는 것이다.

 

아래에 서버블록이 하나 더 생긴 것을 알 수 있는데, 여기서 Http 접근을 https접근으로 redirect 시킬 수 있다.

location 박스를 만들어서 여기에 우선 접근하면 https://로 redirect 시켜주자

 

location 박스는 포트에 해당 하는 서버블록에 접근 시 가장 먼저 불리는 박스이다.

 

이 후 설정 파일을 건들었으니 nginx를 재실행 해준다.

sudo service nginx restart

이제 http로 도메인에 접근해도 https://로 바뀌어 있는 것을 확인할 수 있다.

728x90