우분투를 이용해 웹서비스를 이용한지 꽤 오랜 시간이 흘렀다. 그 사이 HTTPS는 이제 강제 표준? 이 되었고 웹브라우저들은 일반 HTTP는 받아 주지도 않는다. (잘 되던 웹페이지가 안 된다면 요즘은 https 때문인지 의심해 봐야 할 정도다) 그래서 오늘은 우분투에서 무료로 사용할 수 있는 SSL 인증서를 설치하고 자동으로 업데이트하는 방법에 대해서 알아보도록 하자. 

 

SSL을 이용하려면 인증서가 있어야 한다. 도메인마다 돈을 주고 사려고 가격을 알아보니 너무 비싸다. 그래서 알아본 무료 SSL 인증기관이 Let's Encrypt 이다. 

 

https://letsencrypt.org/

 

Let's Encrypt

 

letsencrypt.org

무료 SSL 인증서 발급 Let's Encrypt
무료 SSL 인증서 발급 Let's Encrypt

자신이 운영하는 웹사이트에 SSL 인증을 도입하고 싶다면 (https:// 로 접근할 수 있게 하고 싶다면) 두 가지를 해줘야 한다. 위 무료 인증기관에서 발급하는 인증서를 받아야 하고 받은 인증서를 웹서버(nginx)에 설정해 줘야 한다. 즉, 인증서 받고 nginx설정 업데이트 하면 인증서 적용은 끝이다. 그럼 순서대로 해보자. (단, 웹서버에 이미 nginx 가 설치된 상태라고 가정하고 진행하겠다) 

 

1. Certbot 설치 

먼저 인증서를 발급받아야 한다. 우분투에 certbot이 설치됐는지 확인해 본 후 설치되지 않았다면 설치해 주자. 필요한 프로그램은 certbot 과 ptyhon-certbot-nginx이다. 

sudo apt install certbot python-certbot-nginx

설치가 완료됐으면 도메인에 인증서를 발급 받아야 한다. 

 

2. 인증서 발급 받기

sudo certbot certonly --nginx -d aaa.co.kr www.aaa.co.kr

certbot 을 실행하면 나오는 화면
certbot 을 실행하면 나오는 화면

위 명령어를 실행시키면 아래와 같이 연락받을 주소와 서버 약관 동의 및 등록을 승낙하겠냐는 질문과 메일주소로 이벤트 메일이나 재단 소식을 듣겠는지를 물어보는 질문이 나온다. 메일주소도 잘 넣어주고 긍정적으로 답해 줬다. 잠깐 처리 시간이 있고 결과나 나타난다. 

 

 

certbot 명령 처리 결과화면
certbot 명령 처리 결과화면

IMPORTANT NOTES에 보면 키 위치가 나온다. 약 3달 동안 사용할 수 있다는 안내도 나온다. /etc/letsencrypt/live 폴더 아래 도메인 명으로 폴더가 생성되고 그 아래 키가 위치해 있다. 대략 복잡한 숫자의 키가 있다. 

키는 대략 이렇게 생겼다.
키는 대략 이렇게 생겼다.

3. nginx config 파일 설정

이제 인증서 발급이 끝났으니 nginx 설정 파일에서 SSL을 사용하는 설정을 해줘야 한다. 버추얼 호스팅으로 여러 개의 서버를 운영하고 있다면 sites-available 디렉터리 아래 있는 설정 파일을 변경해 주면 된다. 하나의 도메인만 운영한다면 그냥 default 파일을 수정해 주면 된다. 

listen 443 ssl;
listen [::]:443 ssl;

ssl on;
ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem;

설정 파일을 저장했으면 nginx를 재시작해준다. 

sudo systemctl restart nginx

 

4. 인증서 자동 갱신하기

이제 사이트가 https:// 로 접근이 되는지 확인해 보자. 잘 작동한다면 무료 SSL 설정이 잘 된 것이다. 하지만 이 무료 인증서는 90일까지만 사용할 수 있다. 그 이후에는 다시 재발급받아야 한다. 인증서 재발급 명령어는 아래와 같다. 

sudo certbot renew

인증서 재발급 명령어
인증서 재발급 명령어

이렇게 수동으로 인증서를 갱신해 줄 수 있지만 크론탭에 자동으로 인증서를 갱신하도록 등록해 놓을 수 있다. 

sudo crontab -e

크론탭 수정 메뉴에 들어가서 맨 하단에 아래 명령어를 추가해 주자. 한 달에 한 번 인증서를 갱신하고 nginx를 재시작해준다. 

0 0 1 * * certbot renew --renew-hook="sudo systemctl restart nginx"
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기