Tech/Server

[리눅스 환경 Server 개발] Let's Encrypt로 HTTP HTTPS로 변환하기

0m1n 2022. 3. 31. 15:41
728x90
반응형

오랜만에 블로그를 써본다!!

그동안 과제와 설계에 죽어나는 3학년 인생을 살고있었다..

 

현재 구축해둔 서버 환경은 다음과 같다.

OS: Ubuntu 18.04 (LTS) -> AWS EC2로 클라우드 연결
웹서버 : Nginx
BL : PHP
DBMS : MySQL

도메인 구축 및 DNS 레코드 설정 완료(가비아로 등록)

 

Let's Encrypt란?

- 무료의 TLS/SSL 인증서를 쉽게 가져오고 설치할 수 있는 방법을 제공하는 CA(인증 기관)
- 웹 서버에서 암호화된 HTTPS를 사용할 수 있음

 

(1) Certbot 설치

 

우선 Certbot를 위한 repository를 추가해보자.

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

 

다음으로, Certbot의 Nginx 패키지를 설치합니다.

$ sudo apt install python-certbot-nginx

 

(2) Nginx Configuration 설정

 

Nginx 기본 설정 파일(default)로 이동 후, 인증서를 적용할 도메인 이름을 설정하자!

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

변경을 하고 잘 되는지 확인하기 위해서 테스트를 진행 (-t)

$ sudo nginx -t

이 문장이 뜨면 성공이다!

 Nginx서버를 재시작

$ sudo service nginx restart

 

 

(3) 방화벽의 HTTPS 허용

- Ubuntu는 기본적으로 ufw라는 기본적인 방화벽을 가지고 있다.

HTTPS에 대한 방화벽 허용 설정이 필요하나, 필자의 서버환경인 AWS EC2 인스턴스의 경우는 기본으로 방화벽이 비활성화 되어있다.

$ sudo ufw status

비활성되어 있으면 넘어가자

 

(4) SSL 인증서 get

원하는 도메인을 지정해서 Nginx플러그인을 통해 인증서를 획득하면 된다.

$ sudo certbot --nginx -d 도메인url
// server에 여러개를 등록 했을경우 -d 도메인url을 뒤에 더 추가하면 됨

 

  • 이메일을 입력하라고 나온다. 이메일을 입력해주자.
  • A를 눌러서 동의
  • 이메일 관련 알림 설정이 나오는데 상관없다! (필자는 N)

여기서 만약 도메인 오류가 발생한다면 도메인을 등록한 곳에서 DNS 레코드를  추가해 주어야 한다.

(필자는 가비아에서 A타입으로 @ 와 www를 등록하였다.)

 

이렇게 넘어가면

 

1. No redirect - ~~~

2. Redirect - ~~~

 

이런 문장이 나올 것이다. 이는

 

1 : HTTP 연결을 HTTPS로 리다이렉트 X

2 : HTTP연결을 HTTPS로 리다이렉트함

 

http로 접속했을때 https로 리다이렉트 해주므로 필자는 2번으로 했다!

이렇게 되면 결과가 나오며 https://www.ssllabs.com~~이라는  나올 것이다!  

(작업을 끝낸 후 블로그를 작성해서 캡쳐화면이...죄송합니다)

 

클릭하여 이동하면 테스트를 진행할 것이다. (만약 직접 들어간다면 아래 사이트에서 도메인 주소 입력)

www.ssllabs.com/ssltest/ 

 

이렇게 위 사진과 같이 테스트를 진행할 것이다.

 

만약 Assessment failed 오류가 뜬다면 SSL이 사용하는 HTTPS에 대한 포트 포워딩을 해주어야 한다!!

AWS ec2 보안 그룹 - 인바운드 규칙 - 인바운드 규칙 편집에서

 

443(HTTPS의 포트번호)에 대한 포트를 열어주면 된다.

 

그 후 테스트를 하면 잘 될 것이다.

 

(5) Certbot 자동 갱신 확인

Let's Encrypt의 인증서는 90일 동안만 유효하므로, 90일마다 갱신시켜줘야 한다.

하지만 설치하는 과정에서 /etc/cron.d에 이미 자동으로 갱신시켜주는 커맨드가 추가되어 있어 따로 설정할 필요는 없다.

만약, 갱신 프로세스가 잘 동작하는지 테스트를 해보고 싶다면 아래 명령어를 입력해보자

$ sudo certbot renew --dry-run

 

잘 실행되면 설정이 잘 된 것이다!

만약 자동 갱신이 실패할 경우 앞서 지정한 이메일로 인증서 만료 경고 메시지가 갈 것이다.

 

 

설정이 모두 완료가 되었으므로 Nginx의 서버를 재시작하자.

$ sudo service nginx restart

 

도메인 주소를 입력하면 자물쇠 모양이 생기며 https가 잘 적용된 것을 확인할 수 있다.

728x90
반응형