글에 앞서, 사용 환경은 다음과 같습니다.

  • Raspberry Pi 2 Model B Revision 1.1: 900Mhz ARMv7 Quad Core CPU / 1GB RAM / 100Mbps LAN Port @ 500Mbps GiGA Lite SKB Internet / Ubuntu MATE 16.04 LTS
  • SSH & VNC Connect(PC) ThinkPad T420s / Intel Core i7-2620M Dual Core CPU / 8GM DDR3 RAM / WiFi 802.11n @ 500Mbps GiGA Lite SKB Internet / Windows 10 Pro 1709 RTM / PuTTY & VNCViewer
  • (동일함)/Mobile Nexus 5X / Qualcomm Snapdragon 808 / 2GB RAM / Android 8.0 Oreo / WiFi 802.11ac @ 500Mbps GiGA Lite SKB Internet / JuiceSSH & VNCViewer

이번 글에는 다음과 같은 참고 글을 사용했습니다. 일부 라이센스가 확인되지 않은 글은 글 내부 인용이 아닌 링크로만 남겨두었습니다. 이 외에도 저작권 관련 문의를 하실 분은 댓글 및 트위터 멘션으로 부탁드립니다.

1. Certbot으로 LetsEncrypt 설정하기

(This Contents is writen by Certbot Owners and modified by paperbox because of article purpose. CC-BY)

다행히 Certbot은 ARMHF 아키텍처를 지원합니다. 이에 따라 Certbot 공식 누리집에 있는 대로만 설정하시면 됩니다.

$ sudo apt install software-properties-common

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

$ sudo apt update

$ sudo apt install python-certbot-nginx

설치가 끝나면 -certonly 옵션을 주어서 알아서 NGINX 설정파일을 설정하는 방법과 그렇지 않고 Certbot이 NGINX 설정 파일을 수정해 SSL을 지원하도록 해주는 방법이 있습니다.

$ sudo certbot --nginx

이 뒤로는 Certbot이 시키는 대로 해 주시면 됩니다. 도메인 선택, 이메일 입력, HTTP를 HTTPS로 리다이렉팅할 지에 관한 여부를 고르는 등의 작업이 가능합니다.(certonly를 주지 않았을 경우)

2. DH Param 설정하기

이 부분은 꿈꾸는 꿈 블로그 내용을 참고해 주세요. 보안에 좀 더 신경쓴다면 하는 걸 추천한다는 데 적용해보니 역시나 라즈베리파이에서는 오래 걸려서 3시간 정도 걸렸습니다.

3. Cron Job 사용하기

* 본 내용은 Programming 블로그에서 내용을 빌려왔습니다. 내용 상 언급하지 않고는 진행할 수 없어 일부 내용을 기재합니다. 이 부분에 관해 의견 있으신 경우 댓글 주세요. Programming 블로그 운영자님께 죄송합니다.

Crontab 이라는 프로그램으로 Cronjob을 사용하기 때문에 설치되어 있지 않다면 아래와 같은 내용을 입력하여 설치합니다.

$ sudo apt install crontab

crontab -e를 눌러 어떤 명령어를 입력할 지 설정할 수 있습니다.

4. Cron Job으로 스크립트 입력하기

(This Script is owned by Server Vault Users and modified by paperbox. License is CC-BY-SA 3.0)

위와 같은 내용을 crontab -e에 입력해 주시면 됩니다. systemctl reload nginx 대신 service nginx reload나 service nginx restart를 쓰셔도 됩니다. 위 내용이 매 달 작동하는 스크립트가 아닌 이유는 만료 날짜가 다가오지 않으면 certbot이 인증서를 갱신해주지 않기 때문입니다.

5. 확인하기

아래와 같이 잘 적용된 것을 알 수 있습니다.

본 내용에 관한 문의사항은 댓글 및 트위터 멘션으로 알려주세요. 최대한 신속하게 처리하겠습니다.