Bash로 SSL 인증서 만료일 모니터링 구축하기
서비스를 운영하다 보면 SSL 인증서 만료는 생각보다 자주 놓치는 항목 중 하나다.
특히 여러 도메인을 운영하고 있거나, 고객사 서버처럼 직접 관리하지 않는 환경이 섞여 있는 경우 인증서 만료를 놓쳐 장애로 이어지는 사례도 종종 발생한다.
이번에는 별도의 서비스 없이 Bash 스크립트만으로 SSL 인증서 만료일을 모니터링하고, 만료가 가까워지면 메신저로 알림을 전송하는 시스템을 구축한 내용을 정리해보려고 한다.
왜 만들게 되었을까?
SSL 인증서는 장애가 발생하기 전까지는 크게 신경 쓰지 않는 경우가 많다. 하지만 한 번 만료되면 서비스 접속 불가, API 통신 실패 등 서비스 전반에 영향을 줄 수 있는 장애로 이어질 수 있다
물론 SSL인증서를 구매한 사이트에서 구매자에게 만료일 도래 이메일을 보내주긴 하지만 특정 담당자에게만 전달되는 경우가 많았고, 휴가나 담당자 변경 등의 이유로 팀 전체가 해당 정보를 공유받지 못하는 상황이 생길수도 있다. 또한 여러 서비스를 운영하다 보니 어떤 인증서가 언제 만료되는지 일일이 관리하는 것도 쉽지 않았다.
위와 같은 사유로 나의 업무를 대신해줄 동료를 만들게 되었다.
모니터링 대상 관리
모니터링 대상은 domains.txt 파일에서 관리한다.
- NAME : 서비스 이름
- DOMAIN : 도메인
- PORT : SSL 포트 (생략 시 443)
새로운 도메인이 추가되더라도 파일만 수정하면 된다.
인증서 만료일 조회
인증서 만료일은 OpenSSL을 이용하여 조회한다.
조회 결과는 다음과 같은 형태로 반환된다.
Jun 30 23:59:59 2026 GMT
이를 다시 날짜 형식으로 변환한다.
EXPIRY_DATE=$(date -d "$RAW_EXPIRY_DATE" '+%Y년 %m월 %d일')
남은 기간 계산
현재 시간과 만료일을 Unix Timestamp로 변환한 뒤 차이를 계산한다.
EXPIRY_TS=$(date -d "$RAW_EXPIRY_DATE" +%s)
NOW_TS=$(date +%s)
LEFT_DAYS=$(( (EXPIRY_TS - NOW_TS) / 86400 ))
예를 들어
만료일 : 2026-07-30
현재일 : 2026-06-30
이라면
30일 남음
으로 계산된다.
알림 기준 설정
알림 기준은 배열로 관리한다.
WARN_DAYS=(30)
현재는 30일 전 알림만 사용하지만,
WARN_DAYS=(90 60 30 7)
처럼 설정하면
- 90일 전
- 60일 전
- 30일 전
- 7일 전
여러 차례 알림을 보낼 수도 있다.
메신저 알림 전송
알림은 Incoming Webhook을 이용해 전송했다.
실제 알림 예시는 다음과 같다.
[API] SSL 인증서(api.example.com): 30일 남음
(만료: 2026년 07월 30일)
최종 동작 흐름
최종 스크립트
SSL 인증서는 매 분마다 확인할 필요가 없기 때문에 하루 1회 정도만 실행해도 충분하다.
마무리
SSL 인증서는 평소에는 존재를 의식하기 어렵지만, 만료되는 순간 서비스 장애로 직결될 수 있는 중요한 요소다. 특히 인증서 관리가 특정 담당자나 벤더사의 메일 알림에 의존하고 있다면, 인수인계나 휴가, 단순한 메일 누락만으로도 예상치 못한 장애가 발생할 수 있다.
이번에 구축한 스크립트는 복잡한 모니터링 솔루션 없이도 인증서 만료 여부를 주기적으로 확인하고, 만료 예정 시점을 팀 메신저로 공유할 수 있도록 구성했다
물론 전문 모니터링 솔루션을 사용하면 더 다양한 기능을 활용할 수 있겠지만, 인증서 만료 알림만 필요한 환경이라면 OpenSSL과 Bash만으로도 충분히 실용적인 시스템을 구축할 수 있다.
작은 자동화 하나가 장애를 예방하고 운영 부담을 줄여주는 경험을 하게 되었고, 앞으로도 사람의 기억에 의존하는 작업들은 꾸준히 자동화해 나갈 생각이다.
추가 - SSL/TLS 인증서 유효기간 단축
최근 글로벌 보안 정책 변화에 따라 SSL/TLS 인증서의 유효기간이 지속적으로 단축되고 있다.
과거에는 1년 단위로 갱신하던 인증서가 일반적이었지만, 2026년 3월부터는 최대 유효기간이 약 6개월 수준으로 축소되었으며, 더 단축될 예정이다.
인증서 유효기간이 짧아질수록 갱신 주기는 더욱 빨라지고, 담당자의 수동 관리나 메일 알림에만 의존하는 방식은 운영 리스크가 커질 수밖에 없다.
따라서 단순히 만료일을 모니터링하는 것에 그치지 않고, 장기적으로는 자동 갱신 체계를 구축하는 방안도 함께 검토할 필요가 있다. 특히 운영 중인 도메인이 많거나 여러 담당자가 함께 관리하는 환경이라면, 인증서 발급부터 갱신, 배포까지 자동화하는 방안을 사전 준비를 해야된다.
- 인증서 단축 주요 일정
| 시행일 | 최대 유효기간 |
|---|---|
| 2026년 3월 15일 ~ | 200일 |
| 2027년 3월 15일 ~ | 100일 |
| 2029년 3월 15일 ~ | 47일 |
