블로그를 다시 만들었으니 https:// 와 같은 SSL 주소를 사용할 수 있게 보안인증서를 발급받아야 하는데 어찌어찌 하다보니 시간을 너무 끌었다. 그래서 오늘은 퇴근하자마자 작업을 시작. 구글링을 하는데, 예전에 못봤던 것이 있다. Let’s Encrypt? 어라.. 예전엔 StartSSL 을 사용했었는데.. 가만히 읽다보니 이거 제법 편해보이는게.. 생각보다 일찍 일이 끝날 예감에 렛츠 인크립트! 요놈으로 시작.

Let’s Encrypt 의 설치는 다음의 순서로 진행한다.

$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt update
$ sudo apt install python-certbot-apache

실제로는 우분투 16.04 버전부터 기본으로 저장소에서 제공해주는 letsencrypt 를 설치해주는것이 정석이긴 한데, 좀 더 편하게 이용할 수 있게 해주는 certbot 이라는 고마운 유틸리티가 있어서 이렇게 설치한다. certbot은 letsencrypt에서 추천해주는 유틸이니 안심. 그리고 letsencrypt 는 의존성 검사를 통해 알아서 설치가 된다.

설치가 끝나면 이제 인증서를 발급받아야 하는데, 우선 자신의 도메인이 제대로 연결되어 있어야 한다. 예를 들어 이 블로그의 경우에는 http://justin.kr 주소로 접근이 가능해야함. 인증서 발급은 아래의 한줄로 진행한다.

$ sudo certbot --apache -d justin.kr(본인의것으로변경)

예전엔 키를 받고 변환하고 어쩌고 저쩌고 엄청 복잡하고 불편했는데 이런 간단한 한줄만으로 가능해졌다. 세상 참 편해졌네.. 개인적으로는 도스에서 윈도우3.1로 넘어가던 그 순간의 놀라움을 다시 한번 느꼈다.

만약 내 블로그 혹은 웹사이트가 2개 이상의 주소를 가지고 있을때는,

$ sudo certbot --apache -d justin.kr -d www.justin.kr -d abc.justin.kr ...

이런식으로 확장해준다. 주의할 점은 가장 앞에 오는 주소가 메인 주소이며 해당 웹사이트의 최상단 도메인일 것. 일반적으로 서브도메인을 뺀 알짜 도메인을 제일 앞에 위치하면 된다.

그런데 나의 경우 몇개의 서브도메인을 더 가지고 가상호스트를 사용하고 있다. 이 경우엔 각각의 웹사이트별로 따로따로 진행해줘야 하는데, 위와같이 한줄로 처리하는 것이 아니라,

$ sudo certbot --apache -d justin.kr
$ sudo certbot --apache -d test.justin.kr

이렇게 따로 진행해야만 한다. 그리고 당연한 이야기이지만 중복되는 주소가 없어야만함=_=;;

정상적으로 발급이 되었으면 인증서는 /etc/letsencrypt/live/justin.kr 안에 위치한다. 서브도메인에 따로 인증서를 발급받은 경우 justin.kr, 그리고 test.justin.kr 두개 혹은 그 이상의 폴더가 만들어짐. 더군다나 위 명령 이후에 옵션을 선택하기에 따라서 아파치 가상호스트 설정 파일도 자동으로 수정해준다. 이 기특한 녀석.

아, 혹시 다 잘했는데 난 왜 안되? 하는 분이 있다면… 본인의 공유기에서 443 포트를 서버쪽으로 포워딩 해줄 것. https 보안 주소는 기존의 80번 포트가 아닌 443 포트를 사용한다.

옵션 선택 중 https 로 자동 리디렉션 되는 항목을 선택해주는것 추천. 인증서를 연결해봐야 사람들이 안들어가면 의미가 없다-_-;;;

이제 중요한 자동 인증서 갱신을 위한 준비로 일단 crontab 에 두줄만 추가해준다.

$ sudo crontab -e (vi 에디터로 자동진입)

45 3 * * * certbot renew >> /var/log/le-renew.log
48 3 * * * service apache2 reload

(수정 후)
$ sudo service cron restart

딱 봐도 알겠지만 매일 새벽 3시 45분에 갱신을 시도하고 아파치 서버도 리로드 해주라는 뜻이다. 만일 내 인증서가 아직 갱신해줄 시기가 되지 않았다면 알아서 무시해주니 매일 돌려주는게 안심. 그리고 등록된 인증서가 여러개일 경우 알아서 전체 도메인에 대해 갱신을 시도하니 다른 옵션은 필요 없다.

그리고 모든 작업이 끝나고 웹페이지에의 접속도 테스트가 끝났다면 마지막으로 갱신이 잘 될지 테스트도 한번  해보자. 이 작업에서 에러가 발생된다면 나중에 시기가 되어서 certbot renew 가 실행 되더라도 갱신이 제대로 안 될 우려가 있다.

$ sudo certbot renew --dry-run

위 명령어는 실제로 갱신은 하지 않지만 갱신 과정에서 오류가 발생할 지 여부를 미리 파악해준다. 여기에서 클리어 되었으면 일단 안심해도 될 듯.

카테고리: 서버

답글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.