리눅스(Ubuntu 기준) ssl 사설 인증서 자동갱신 구축하기

2023. 4. 27. 14:14리눅스

반응형

ssl 사설인증서 갱신 처리하는 쉘 스크립트 생성

#!/bin/bash

CERT_PATH="/.ssl/example.com.cer" # 인증서 경로
KEY_PATH="/.ssl/example.com.key" # 인증서 키 경로
CSR_PATH="/.ssl/example.com.csr" # CSR 경로

# 인증서 생성날짜와 현재날짜 차이 계산
cert_expiry=$(openssl x509 -startdate -noout -in $CERT_PATH | cut -d'=' -f2-)
expiry_epoch=$(date +%s -d "${cert_expiry}")
today_epoch=$(date +%s)
diff=$(expr ${today_epoch} - ${expiry_epoch} )
days_left=$(expr ${diff} / 86400)


# 인증서 갱신 처리
if [ ${days_left} -ge 360 ]; then
 	# CSR 정보 설정
	COUNTRY=KR
	STATE=Seoul
	LOCALITY=Seoul
	ORG=Seoul
	UNIT=paycoq
	CN=paycoqocr.com

	# CSR 생성
	openssl req -new -newkey rsa:2048 -nodes -keyout ${KEY_PATH} \
	    -out ${CSR_PATH} \
	    -subj "/C=$COUNTRY/ST=$STATE/L=$LOCALITY/O=$ORG/OU=$UNIT/CN=$CN"



	openssl x509 -req -days 365 -in ${CSR_PATH} -signkey ${KEY_PATH} -out ${CERT_PATH}

	# 웹 서버를 재시작합니다.
	sudo systemctl restart nginx
fi

 

sudo 명령어로 인증서 갱신 쉘 스크립트 실행시 비밀번호 묻지 않도록 처리

> sudo visudo

# 아래 내용 입력 후 저장
# 저장할땐 컨트롤 + x -> Y -> 엔터, vi 에디터 일 경우는 :wq 

  ${로그인한 유저 계정} ALL=(ALL) NOPASSWD:${인증서 갱신 쉘 스크립트 경로}

 

 

Crontab 설치

# cron 설치
sudo apt update -y
sudo apt install -y cron
# cron 시작
sudo service cron start
# cron systemctl 활성화
sudo systemctl enable cron.service
# cron systemctl 등록 확인
sudo systemctl list-unit-files | grep cron
sudo service cron status

 

 

Crontab 배치등록

> crontab -e

# cron 에디터에 아래 내용 입력

# 새벽 1시마다 인증서 갱신 쉘 스크립트가 실행되도록 설정
  0 1 * * * sudo /home/paycoq/WAS/ocr/script/batch/renewCert.sh
반응형