메뉴 건너뛰기

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 Rocky Linux 및 NetworkManager를 사용한 정적 경로 설정 미르다테 2025.04.03 15
74 Ubuntu 22.04 LTS 패키지 업데이트 시 오류 해결 방법 미르다테 2025.02.19 22
73 우분투 리눅스(Ubuntu Linux)에서 Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details. 오류 해결 방법 미르다테 2025.02.09 27
72 연속적으로 명령 실행시키기 (;과 &와 &&의 차이) 미르다테 2025.02.03 37
71 내 공인IP 확인하기(스크립트) 미르다테 2025.02.02 21
70 리눅스 네트워크 설정(Debian 계열, Ubuntu) 미르다테 2025.01.16 25
69 우분투(Ubuntu) 리눅스 apt 패키지 설치 이력 확인 미르다테 2025.01.14 110
68 Rocky Linux 9 고정 라우팅 경로 설정 방법 미르다테 2025.01.10 115
67 Rocky Linux 9에 Webmin 설치하는 방법 미르다테 2025.01.07 107
66 라이믹스(Rhymix) 애드온 '링크 프리뷰' 설치정보 미르다테 2025.01.06 108
65 Rocky Linux 9에 FFmpeg를 설치하는 방법 미르다테 2025.01.06 100
64 Ubuntu 24.04에 Webmin을 설치하는 방법 미르다테 2024.12.31 96
63 Ubuntu 24.04 LTS에 Docker 설치하기 미르다테 2024.12.31 122
62 Rocky Linux Docker, Docker Compose 설치 방법 미르다테 2024.12.30 109
61 라이믹스(Rhymix) 백업 및 복원 방법 미르다테 2024.12.30 117
60 Rocky Linux - 라이믹스(Rhymix) 설치하기 미르다테 2024.12.30 89
59 Rocky Linux 비밀번호 입력 초과로 인한 계정잠김 확인 및 해제 방법 미르다테 2024.12.30 98
58 Arch Linux mirrorlist 갱신하기 미르다테 2024.12.30 112
57 [중요] RedHat 계열 리눅스 서버 취약점 조치 방법 정리 - MirDaTe 미르다테 2024.12.30 102
56 [Arch Linux] pacman을 사용하여 시스템 업그레이드 시 패키지 손상으로 인한 업그레이드 안되는 증상 해결방법 미르다테 2024.12.30 125
위로