메뉴 건너뛰기

SayClub.org

리눅스(Linux)

Nginx Proxy Manager (이하 NPM)에서 설정한 Proxy Host의 SSL의 인증 기간이 지나가서 문제가 발생하지 않도록 자동 갱신하는 방법에 대해 알아보도록 하겠습니다.

 

프록시를 설정하면서 SSL 인증을 설정하였는데요

이 인증서를 제때 갱신해주지 않으면 도메인으로 접속을 못하는 상당히 불편한 일을 겪게 될 수도 있습니다.

 

저희가 인증받은 Let’sencrypt는 무료 SSL 인증서로 갱신 주기가 90일입니다.

갱신 주기 : 90일 (만료 30일 이전부터 갱신 가능)

이렇게 90일마다 꼬박꼬박 갱신을 하지 않으면 어느날 갑자기 접속이 불가능해지는 상황이 발생한다는 것이죠

 

이제 본론으로 들어가서 명령어를 통해서 인증서를 갱신하는 방법을 설명하겠습니다.

 

갱신이 필요한 SSL 인증서

 

1. 명령어로 SSL 인증 하는 방법

1) docker 컨테이너명 확인

docker ps -a 

 

  CONTAINER ID        IMAGE                             COMMAND                  CREATED             STATUS                 PORTS                                                                        NAMES

  c510bbe77858        jc21/mariadb-aria:10.4            "/scripts/run.sh"        6 hours ago         Up 6 hours             3306/tcp                                                                     npm_db

  b51361627e5b        jc21/nginx-proxy-manager:latest   "/init"                 6 hours ago         Up 6 hours (healthy)   0.0.0.0:80->80/tcp, 0.0.0.0:81->81/tcp, 0.0.0.0:443->443/tcp  npm

 

가장 우측의 NAMES를 보시면 npm이라는 컨테이너가 있죠. 이걸 잘 확인해두시면 됩니다.

 

2) 컨테이너 쉘로 명령어 실행하기

docker exec -it npm /usr/bin/certbot renew

  Saving debug log to /var/log/letsencrypt/letsencrypt.log

 

  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

  Processing /etc/letsencrypt/renewal/npm-1.conf

  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

  Cert not yet due for renewal

 

  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

  Processing /etc/letsencrypt/renewal/npm-3.conf

  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

  Cert not yet due for renewal

 

  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

  Processing /etc/letsencrypt/renewal/npm-5.conf

  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

  Cert not yet due for renewal

 

  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

  Processing /etc/letsencrypt/renewal/npm-6.conf

  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

  Cert not yet due for renewal

 

  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

 

  The following certs are not due for renewal yet:

    /etc/letsencrypt/live/npm-1/fullchain.pem expires on 2020-09-01 (skipped)

    /etc/letsencrypt/live/npm-3/fullchain.pem expires on 2020-09-01 (skipped)

    /etc/letsencrypt/live/npm-5/fullchain.pem expires on 2020-09-01 (skipped)

    /etc/letsencrypt/live/npm-6/fullchain.pem expires on 2020-09-01 (skipped)

  No renewals were attempted.

  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

“docker exec -it [컨테이너명] /usr/bin/certbot renew” 명령어를 입력하면 생성되어 있는 SSL 전체가 갱신됩니다.

 

2. crontab 사용하기

1) crontab 사용방법 (리눅스)

## crontab 설정

crontab -e

 

## crontab 목록 확인

crontab -l

 

## crontab 삭제

crontab -r

 

2) crontab 사용방법 (시놀로지)

시놀로지에서는 crontab -e 가 작동하지 않습니다.

## crontab 설정

nano /etc/crontab

 

3) crontab 주기 설정 방법

## crontab 주기

*      *      *      *      *

분(0-59)  시간(0-23) 일(1-31)   월(1-12)   요일(0-7)

 

## 매분마다 example.sh 실행 예제

* * * * * /home/example.sh

 

## 매주 일요일 10시 45분에 example.sh 실행 예제

45 10 * * 7 /home/example.sh

 

## 매일 매시간 0분, 30분에 example.sh 실행 예제

0,30 * * * * /home/example.sh

 

## 매일 7시 0분~30분까지 매분 example.sh 실행 예제

0-30 7 * * * /home/example.sh

 

## 매 10분마다 example.sh 실행 예제

*/10 * * * * /home/example.sh

 

## 매월 11일에서 15일까지 2시, 4시, 6시, 8시에 매 15분마다 example.sh 실행 예제

*/15 2,4,6,8 11-15 * * /home/example.sh

 

4) crontab 로그 기록하기 (cron logging)

## 로그 기록하기

* * * * * /home/example.sh > /home/example.log 2>&1

 

## 로그 누적시켜 기록하기

* * * * * /home/example.sh >> /home/example.log 2>&1

 

## 로그 없이 실행하기

* * * * * /home/example.sh > /dev/null 2>&1

 

여기까지 crontab 사용 방법을 알아보았는데요.

이제 crontab설정을 통해서 SSL 인증을 자동 갱신하는 방법에 대해 설명드리겠습니다.

 

3. crontab으로 SSL인증 자동 갱신하기

## root 권한 얻기

sudo -i

 

## crontab 열기

nano /etc/crontab

 

## 스크립트 파일 작성

nano /homes/script/auto_renew.sh

docker exec -it npm /usr/bin/certbot renew

 

## SSL인증을 위한 명령 추가하기 (매월 1일 0시 0분)

0       0       1       *       *       root    /volume1/homes/user/script/npm/auto_renew.sh

 

위와 같이 1달 단위로 갱신을 설정해두면 Let’sencrypt의 갱신주기 범위를 지나지 않고 갱신이 가능하겠죠?

불안하시면 보름 단위로 설정해두셔도 상관없습니다.

이상으로  crontab으로 SSL 자동 갱신하는 방법에 대한 포스팅을 마치도록 하겠습니다.

번호 제목 글쓴이 날짜 조회 수
75 우분투(Ubuntu) 서버 / Nginx, PHP, MariaDB 설치하고 설정하기 미르다테 2024.12.30 17
74 워드프레스 미디어 업로드 용량 제한 오류 해결 미르다테 2024.12.30 18
73 Nginx Reverse Proxy 사용시 IP 주소 전달 문제 해결하기 미르다테 2024.12.30 21
72 우분투(Ubuntu) 서버에 삼바(SAMBA) 설치하기 미르다테 2024.12.30 33
71 만자로(Manjaro) 리눅스 설치 후 초기 세팅 미르다테 2024.12.30 28
70 만자로(Manjaro) 리눅스 Pacman 사용법 미르다테 2024.12.30 23
» Nginx Proxy Manager SSL 자동 갱신하기 미르다테 2024.12.30 29
68 우분투(Ubuntu) 서버 한글 폰트 설치하기 미르다테 2024.12.30 43
67 우분투(Ubuntu) 서버 지역시간설정(tzdata) 및 로케일(locale) 설정하기 미르다테 2024.12.30 56
66 우분투(ubuntu) 서버 유저명, 홈경로, 그룹명 변경 방법 미르다테 2024.12.30 41
65 CentOS 리눅스 YUM 사용법 미르다테 2024.12.30 48
64 CentOS 서비스 자동시작 설정 및 해제 미르다테 2024.12.30 67
63 CentOS 7에서 Docker 및 Docker Compose 설치하기 미르다테 2024.12.30 84
62 칼리 리눅스(Kali Linux)에 크롬(Chrome) 설치하기 미르다테 2024.12.30 69
61 우분투(Ubuntu)에서 일괄 업데이트하기 (불필요한 패키지 자동 삭제) 미르다테 2024.12.30 57
60 우분투(Ubuntu) 서버 보안 자동 업데이트 방법 미르다테 2024.12.30 71
59 CPU Governor 종류 미르다테 2024.12.30 85
58 그누보드5 게시판의 첨부파일 용량 제한과 관련된 PHP 설정 미르다테 2024.12.30 79
57 리눅스 로그파일 utmp, wtmp, btmp, last log, sulog 미르다테 2024.12.30 51
56 Virtualbox Centos 7 게스트확장설치 미르다테 2024.12.30 61
위로