서버 이전 경험 공유기 – 2. Let’s Encrypt
이번에 서버이전을 하면서 이것저것 알게된 지식 및 경험을 공유하고자 이 글을 작성합니다.
이전 글은 여기서 볼수 있습니다.
Let’s Encrypt
이 전 글에서 간단히 언급했지만, Let’s Encrypt
라는 https 보급 확산을 위한, 무료 인증서 발급 프로젝트 입니다.
사실 예전부터 개인 서버에 https 를 적용하고 싶었지만, 비용이 개인이 부담하기엔 적은 금액이 아니라서 도입을 망설이고 있었습니다.
이런 찰나에 이런 프로젝트가 있다는 사실을 알게 되어 제 서버에 도입을 하지 않을 수가 없었습니다.
설치
Let’s Encrypt
를 설치하기 위해서는 Certbot
이라는 클라이언트가 필요합니다.
위의 사이트를 들어가면 certbot
을 설치하는 법이 자세히 나옵니다.
간단히 정리하면,
$ wget https://dl.eff.org/certbot-auto
$ chmod a+x ./certbot-auto
$ ./certbot-auto --help
wget
으로 다운로드 받은 뒤, 실행권한 주면 끝입니다. 간단합니다.
certbot-auto
는 현재(version 0.15.0) nginx
와 apache
를 지원하고 있습니다. 만약 nginx
나 apache
를 직접(apt-get or yum) 설치했다면 plugin
을 이용해서 연동할 수 있을 것입니다.
–apache Use the Apache plugin for authentication & installation
–standalone Run a standalone webserver for authentication
–nginx Use the Nginx plugin for authentication & installation
하지만, 저는 docker
를 이용한 관계로 그렇게 하지 못하고 다른 방식으로 설치 진행했습니다.
GitHub – 9to6/docker-nginx: Docker for nginx
제 github 에 dockerfile 및 readme 를 참고 하시면 되겠습니다.
핵심은 certbot
설치 후,
$ ./certbot-auto certonly --standalone --email your@email.com -d example.com -d www.example.com
위 명령 실행입니다. example.com
대신 본인의 도메인을 입력하시면 됩니다.
처음으로 실행하셨다면, 본인 이메일 입력하는 란이 나오고,
이메일을 입력 한 뒤에는,
기꺼이 본인의 이메일을 EFF(Electronic Frontier Foundation) 에 제공하겠냐고 물어보는데 저는 그냥 제공해드렸습니다. ㅎㅎㅎㅎ
Let’s Encrypt
는 3개월 마다 한번씩 갱신해야합니다.
매번 신경 쓰기 힘드므로 crontab
에 등록해줍니다.
아래 내용은 매일 새벽 1시에 renew 를 시도하고, 성공시 nginx-simple
이라는 docker container
내부의 nginx
의 설정을 다시 reload 하라는 뜻 입니다.
$ sudo echo "0 1 * * * /home/user/certbot-auto renew --quiet --renew-hook \"/usr/bin/docker exec nginx-simple nginx -s reload\"" | sudo tee -a /var/spool/cron/crontabs/root
결론
https 설치가 무사히 완료되었습니다.
이제 appstore application 의 adhoc 버전 배포할 때 굳이 dropbox를 써야하는 번거로움도 사라지겠네요. (다만 요즘 앱개발 할 일이 전혀 없습니다…)
https 적용으로 보안성도 강화되었습니다.
SSL Server Test (Powered by Qualys SSL Labs) 기념으로 이곳에서 보안성 테스트도 해줬습니다.
점수가 괜찮은 듯 합니다.
만족스럽습니다. 여러분들도 https 적용하시고 https 의 빠른 보급에 작은 기여를 해주셨으면 합니다.