상세 컨텐츠

본문 제목

let's encrypt 인증서 자동갱신

프로젝트/개인 서버 프로젝트

by KAZE11KOA 2022. 11. 28. 02:48

본문

문제의 시작

요놈이 나를 또 괴롭힌다..

올해 하계 훈련 도중이었나? 갑자기 서버가 응답을 안했던 적이 있었는데 수료 후에 돌아와서 보니 let's encrypt는 무료로 ssl 인증이 가능한 대신 90일 마다 재갱신이 필요하다고 해서 갱신을 해주었던 적이 있다.

 

그러다가 오늘 저녁부터인가 이놈이 또 뜨는 것이다.

이참에 자동화를 해주기로 했다.


인증서 갱신

#!/bin/bash

sudo systemctl stop apache2.service
sudo certbot renew
sudo certbot certificates
sudo systemctl start apache2.service
sudo reboot

 

먼저 bash 파일을 만들어 주자. vi든 nano든 그냥 내용 작성 후 [원하는 이름.sh]로 저장해 주면 된다.

위 명령어의 흐름은

1. 아파치의 실행을 중단하고,

2. 재갱신을 실시하며,

3. 제대로 갱신이 되었는지 확인(그런데 자동화 하면 내가 이걸 볼 방도는 없고,, 그냥 bash 잘 작동하나 확인용으로 넣음..)

4. 아파치를 재실행 하고,

5. 시스템을 재부팅 한다.

 

인데 3,4 번은 없어도 될 것 같다..

그리고 아파치 재실행을 해도 접속이 안되길래 재부팅도 하도록 했는데, 어떻게 안해도 될 방법이 있을 수도 있다.

근데 난 귀찮아서 안하려고 한다

 

일단,

chmod +x 배시_파일명.sh  #해당 스크립트에 실행 권한을 줌
./배시_파일명.sh         #해당 스크립트 실행

을 해서 제대로 작동을 하는지 테스트를 해보자.

success라고 뜨는걸 보니 잘 되었나 보다.

일단은 과정 자체는 잘 진행된 것 같다.

 

난잡하기 그지없는 메인 페이지..


crontab 자동화

다음은 이걸 자동화를 해 주어야 한다.

 

sudo -s
crontab -e

를 통해 관리자 권한의 crontab에 접근할 수 있는데, 

 

1 4 1 * * /[sh 파일 경로] 
# 예를 들면, * * * * * /bin/script/automatioin.sh 이런 식

등으로 자동 실행을 예약해 주면 된다. 위의 경우는 매달 1일 오전 4시 1분에 갱신을 시도한다는 의미인데,

앞에 '*' 문자 5개는 순서대로 분, 시, 일, 월, 요일을 의미한다. 

 

사실 let's encrypt의 갱신은 만료일이 30일 미만 남았을 때 가능하다고 하기 때문에, 혹시라도 31일이 만료일인데 1일에 갱신하면 안될 수도 있지 않은가.. 그래서 그냥 아랫줄에  '1 4 15 * * /[sh 파일경로]' 식으로 한줄을 더 써줬다. 

 

왜냐면 1 4 * * * 으로 해버리면 한달에 두번만 실행해도 되는걸 하루에 한번씩 실행해 버리게 되니까.. 발적화의 서막

 

내년 2월 25일인가에 다시 확인해보도록 하자(?)

이렇게 작성해준 후에 저장하고 나오면 된다. 

요새 리액트좀 공부해서 페이지좀 바꿔보려고 하는데 너무 정신이 없다.

 

정말이지 아무도 나를 모르고 돈이 많았으면 좋겠다.

마당 딸린 야무진 복층 주택에서 취미생활만 즐기면서 살게..

반응형

관련글 더보기

댓글 영역