HTTPS 적용 (Let’s Encrypt)

oyeon·2021년 4월 20일
2

Server

목록 보기
9/16

reference
https://luminitworld.tistory.com/85?category=975147
https://namu.wiki/w/Let's%20Encrypt

환경

클라우드 서버 : AWS EC2 인스턴스
OS : Ubuntu 20.04 LTS
WebServer : Nginx
BL : PHP
DBMS : MySQL

HTTPS 적용

HTTPS는 선택이 아닌 필수!

Let's Encrypt는 사용자에게 무료로 TLS 인증서를 발급해주는 비영리기관이다. 몇 가지 TLS 인증서 종류 중에서 완전 자동화가 가능한 DV (Domain Validated, 도메인 확인) 인증서를 무료로 발급한다.

1. Certbot 설치

먼저 저장소를 최신으로 업그레이드 시키고, certbot을 위한 저장소를 추가하였다.

~$ sudo apt update
~$ sudo apt upgrade
~$ sudo add-apt-repository ppa:certbot/certbot

다음으로 cerbot의 nginx 패키지를 설치한다.

~$ sudo apt install python3-certbot-nginx

2. Nginx configuration 설정

설정파일에 인증서를 적용할 도메인 이름을 작성한다.

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

변경 후 이상이 없는지 테스트한다.

~$ sudo nginx -t

이상이 없으면 설정 파일을 적용하기 위해 nginx를 reload 한다.

~$ sudo systemctl reload nginx

3. SSL 인증서 받기

-d 옵션으로 도메인을 지정해서 Nginx 플러그인을 통해 인증서를 획득한다.

~$ sudo certbot --nginx -d devhoyeon.shop -d www.devhoyeon.shop

www가 붙지 않은 devhoyeon.shop 도메인에 대해 다음과 같이 오류가 발생했다.

이유는 DNS 레코드에서 www 호스트만 설정했기 때문이다. 가비아 사이트에서 DNS 레코드를 추가하자.

호스트의 @는 www가 없을 때 들어오는 설정이다.

DNS 레코드 추가 후 다시 SSL 인증서를 받았다.

SSL 인증서를 획득한 것을 확인할 수 있다.

콘솔 창에서 알려준 대로 ssllabs 사이트에서 테스트 했으나 Assessment failed 오류가 발생했다. 이는 AWS 보안 설정에서 HTTPS 인바운드 규칙을 추가하여 해결할 수 있다.

HTTPS 테스트가 성공했다. HTTPS 설정을 마친 후 nginx 서버를 restart 시킨다.

~$ sudo service nginx restart

기존 도메인이 HTTPS 적용되어 도메인 왼쪽에 자물쇠 모양이 생긴 것을 볼 수 있다.

profile
Enjoy to study

0개의 댓글