덜 귀찮게 웹 호스팅에서 Let’s encrypt 인증서 쓰기

지난 글을 쓰고 더 나은 방법을 찾다가, 반자동화하는 법을 발견했다.

필요한 것들

  1. git, php 5.6 이상 제공되는 호스팅. (git이 제공되지 않는 경우 해당 사이트에서 직접 zip으로 받아야 한다.)
  2. CPanel 접근이 가능한 호스팅 (Bluehost같은 외국 호스팅은 대부분 가능)

과정

  1. ssh로 해당 호스팅 서버에 접속한다.
  2. 우선 php용 acme-client를 불러온 뒤, 해당 폴더에 들어간다.

    git clone https://github.com/kelunik/acme-client
    cd acme-client

  3. 다음 composer를 설치한다. 만약 버전 에러가 나면 php 대신 각 명령어 앞에 굵게/기울임 처리된 php를 php56, php70 등으로 바꿔보면서 진행하면 된다.

    php -r “copy(‘https://getcomposer.org/installer’, ‘composer-setup.php’);”; php composer-setup.php; php -r “unlink(‘composer-setup.php’);”; php composer.phar install –no-dev

  4. 그리고 스크립트를 쓴다.

    cd ~
    nano autoscript.sh
    (아래부턴 nano에서 입력)
    #!/bin/bash
    cd /home/naraeons/acme-client/
    php bin/acme setup –server letsencrypt –email (본인 이메일)
    php
    bin/acme issue –domains (도메인) –path (public_html 경로) –server letsencrypt
    (저장)
    chmod +x autoscript.sh

  5. autoscript.sh를 실행해 어디에 인증서가 생기는지 확인하고 적어둔다. 빨간 밑줄 부분이 해당 부분이다.
  6. CPanel로 들어가 Advanced의 Cron Jobs를 누른다.
  7. 다음과 같이 설정한 후 Add New Cron Job을 누른다.
  8. 다음 갱신 타이밍이 되면 5번에 적어뒀던 경로에 들어가 파일을 받은 후, 여기를 눌러 7번 순서부터 진행하면 된다.