[Server] AWS 서버 구축하기 Linux + Nginx PHP MySQL (6)

황승환·2021년 7월 8일
0

Server

목록 보기
7/23

HTTPS 적용 (Let's Encrypt)

Certbot tool 설치

  1. Let's Encrypt를 사용하여 SSL 인증서를 얻기 위해서는 우선적으로 letsencrypt를 설치해야 한다. letsencrypt를 설치하면 Certbot이 안에 포함되어 있기 때문에 별도로 Certbot을 설치할 필요가 없다. 먼저 update를 한번 해준다. sudo apt-get install letsencrypt -y 명령을 통해 letsencrypt를 설치한다.
  2. Nginx용 Certbot을 설치한다. 우선 sudo apt update로 update를 한번 더 해준다. 그리고 sudo apt upgrade -y 명령을 진행해준다. sudo apt install certbot python3-certbot-nginx 명령을 통해 Nginx 웹서버용 파이썬3를 설치한다. 다른 블로그를 보면 python-certbot-nginx 명령을 사용하는데 파이썬3로 업그레이드 되면서 파이썬3를 사용하라는 권고를 받는다고 한다. 그래서 본인은 처음부터 파이썬3로 설치했다.

Nginx 설정

  1. Nginx 기본 구성 파일을 수정하기 위해 vi 편집기를 사용하여 /etc/nginx/sites-available/default를 열어준다.
  2. Nginx 기본 구성 파일의 servername ; 부분을 다음과 같이 www.도메인이름 도메인이름 ; 로 수정해준다. (본인의 도메인은 xx0hn이므로 www.xx0hn.site, xx0hn.site로 수정했다.)
  3. 수정된 사항이 잘 적용되는지 테스트를 진행한다.
  4. 수정된 사항을 적용시키기 위해 Nginx를 reload 한다.

SSL 인증서 받기

Certbot은 다양한 플러그인을 통해서 SSL 인증서를 얻는 다양한 방법을 제공한다. Nginx의 경우에는 필요할 때마다 Nginx를 재구성하고 구성을 reload하는 방식을 사용한다.

  1. SSL 인증서를 받기 위해 sudo certbot --nginx -d xx0hn.site -d www.xx0hn.site 명령을 실행한다. 도메인을 더 추가하고 싶다면 -d 도메인이름을 뒤에 붙이면 된다. 처음 인증서를 설치하면 다음과 같이 이메일 등록, 약관 동의를 진행하게 된다. 그리고 기존 http 연결을 어떻게 설정할 것인지 선택해야 되는데 별 생각없이 1로 설정을 했다. (1을 입력한다면 HTTP 연결을 HTTPS로 리다이렉트 하지 않고, 2를 입력한다면 HTTP 연결을 HTTPS로 리다이렉트 한다.) 설정까지 끝나면 구성이 업데이트되고 Nginx가 재시작된다.

  2. http 연결 설정을 아무것도 모른 상태에서 진행해서 sudo certbot --nginx -d xx0hn.site -d www.xx0hn.site 명령을 다시 실행시켰다.

  3. 인증서 다운로드 및 설치가 완료되었다는 내용이 나온다. 다음 터미널 화면의 상단을 보면 You should test your configuration at: 이라는 문구가 보인다. 아래 url로 접속해본다.

  4. SSL Labs Server Test로 이동하게 되고 도메인을 test한다. Assessment failed:Unable to connect to the server 라는 오류 메세지가 뜬다. 오류가 발생한 이유는 AWS EC2 인스턴스의 보안 그룹에 SSL이 사용되는 https(443)포트를 추가해주지 않았기 때문이다.

  5. AWS로 들어가 실행중인 EC2 인스턴스의 보안 설정에서 다음과 같이 인바운드 규칙을 추가해준다.

  6. 인바운드 규칙을 추가해줬으니 sudo certbot --nginx 명령을 다시 실행해준다.

  7. SSL Labs Server Test에서 도메인을 입력해서 다시 test를 진행한다. Submit을 누르면 이전의 오류 화면이 다시 뜨는데 Clear cache를 눌러 test를 다시 진행하도록 한다.

  8. test가 끝나면 다음과 같이 등급을 확인할 수 있다.

Certbot 자동 갱신 확인

  1. Let's Encrypt의 인증서는 90일동안만 유효하다. 그러므로 90일마다 갱신을 해줘야 하는데 설치 과정에서 /etc/cron.d에 자동으로 인증서를 갱신해주는 명령이 추가되어 있다. 갱신이 정상적으로 동작하는지 test하기 위해서 sudo certbot renew --dry-run 명령을 실행한다. 위와 같이 오류가 없다면 모든 설정이 완료된 것이다. 인증서 자동 갱신 프로세스가 실패할 경우에는 Let's Encrypt는 지정 이메일로 인증서 만료 경고 메세지를 보낸다.
profile
꾸준함을 꿈꾸는 SW 전공 학부생의 개발 일기

0개의 댓글