홈 / 가이드 / SSL 인증서 설치

SSL 인증서 설치와 자동 갱신 — 만료로 멈추지 않게

‘연결이 비공개로 설정되어 있지 않습니다’가 뜬 뒤에 찾아보는 분이 가장 많습니다. 설치보다 중요한 건 ‘다음 만료 때 자동으로 갱신되게’ 만드는 것입니다.

앱몬스터 · 작성 2026-10-26

핵심 답변

SSL 인증서는 설치가 아니라 갱신에서 사고가 납니다. 무료 인증서(Let's Encrypt)는 90일마다 갱신해야 하고, 유료 인증서도 길어야 1년이에요. 호스팅·클라우드(카페24·가비아·Firebase·Vercel 등)는 대부분 자동 갱신을 제공하니 켜져 있는지 확인하고, 직접 운영하는 서버는 certbot 자동 갱신 + 만료 알림을 붙이세요. 앱이 쓰는 API 서버 인증서도 같은 날 만료되면 앱이 통째로 먹통이 됩니다.

인증서 만료가 계속 생기는 이유

SSL(정확히는 TLS) 인증서는 ‘이 도메인이 진짜고 통신이 암호화된다’는 증명서입니다. 유효기간이 있어서 때가 되면 새로 받아야 하는데, 처음 설치한 사람이 떠났거나, 결제 카드가 바뀌었거나, 자동 갱신 스크립트가 어느 순간 조용히 실패하면서 만료가 됩니다. 사이트가 멀쩡해 보여도 인증서는 특정 날짜에 갑자기 끊기는 게 특징이에요.

만료가 터지는 흔한 경로
설치는 됨
업체·전 담당자가 세팅
→
갱신 조건 변화
카드 만료·서버 이전·DNS 변경
→
갱신 조용히 실패
알림 없음·로그만 남음
→
만료일에 먹통
웹 경고창·앱 연결 실패
갱신 실패는 소리 없이 일어납니다. 그래서 ‘자동 갱신이 돌고 있는지’를 사람이 주기적으로 확인하거나 알림을 붙여야 합니다.

이미 만료돼서 사이트·앱이 멈춘 상태라면 이 글보다 먼저 도메인·SSL 만료로 먹통일 때 응급 대응을 보세요. 이 글은 ‘다시는 안 터지게’ 만드는 쪽입니다.

내 사이트는 어떤 경우인가 — 3가지 유형

유형예인증서 관리 주체할 일
관리형 호스팅·플랫폼Firebase Hosting, Vercel, Netlify, 카페24·아임웹 기본 도메인플랫폼이 자동 발급·갱신커스텀 도메인 연결 상태만 확인
웹호스팅 + 내 도메인카페24·가비아·닷홈 웹호스팅호스팅 관리 화면에서 신청(무료/유료)자동 갱신 옵션 켜기, 만료일 메모
직접 운영 서버AWS EC2·네이버클라우드·자체 서버의 Nginx/Apache내가(certbot 등)자동 갱신 타이머 + 알림 + 재시작 훅
Firebase·Vercel 같은 관리형 호스팅은 인증서를 직접 만질 일이 거의 없습니다. 대신 도메인 등록 만료나 DNS 레코드 변경으로 인증 실패가 나는 경우가 있으니, 도메인 자동 결제와 DNS 설정을 확인하세요.

직접 운영 서버 — 무료 인증서 설치 순서

Let's Encrypt는 무료이고 자동화를 전제로 설계된 인증서입니다. 유효기간이 90일로 짧은 대신 certbot이 알아서 갱신합니다. Ubuntu + Nginx 기준 순서입니다.

certbot 설치 → 발급 → 자동 갱신 확인
1
DNS가 서버를 가리키는지 확인도메인의 A/AAAA 레코드가 이 서버 IP인지. 80·443 포트가 열려 있어야 발급 검증이 통과.
2
certbot 설치·발급Nginx 플러그인을 쓰면 설정 파일까지 자동으로 고쳐 줌.
3
갱신 테스트(dry-run)실제 갱신 전에 모의 갱신으로 실패 요인을 미리 확인.
4
자동 갱신 타이머 확인 + 재시작 훅갱신 후 Nginx가 새 인증서를 읽도록 reload 훅을 등록. 이걸 빠뜨리면 ‘갱신은 됐는데 여전히 만료’ 상태가 됨.
갱신은 보통 만료 30일 전부터 시도됩니다. 즉 매일 한 번씩 ‘아직 갱신할 때 아님’으로 끝나는 게 정상입니다.
# Ubuntu + Nginx
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d example.com -d www.example.com

# 자동 갱신이 실제로 되는지 모의 실행
sudo certbot renew --dry-run

# 타이머가 켜져 있는지
systemctl list-timers | grep certbot

# 갱신 뒤 Nginx가 새 인증서를 읽도록 (훅 파일)
echo 'systemctl reload nginx' | sudo tee /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh
sudo chmod +x /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh

‘지금 자동 갱신이 돌고 있나’ 확인하는 법

설치한 사람이 나든 남이든, 아래 세 가지를 확인하면 현재 상태를 알 수 있습니다.

  • 만료일 직접 조회 — 브라우저 주소창 자물쇠 → 인증서 보기, 또는 서버에서 openssl로 확인.
  • 갱신 로그 — /var/log/letsencrypt/letsencrypt.log에 최근 날짜의 성공/실패 기록이 있는지.
  • 마지막 갱신 날짜 — 발급일이 90일 넘게 안 바뀌었는데 Let's Encrypt라면 자동 갱신이 멈춘 겁니다.
# 남은 만료일 확인 (어디서든 실행 가능)
echo | openssl s_client -servername example.com -connect example.com:443 2>/dev/null \
  | openssl x509 -noout -dates

만료 전에 알려주는 장치 붙이기

알림 장치 — 하나는 꼭

권장 조합

  • 외부 업타임 모니터링(SSL 만료 알림 기능 포함)이 매일 확인
  • 만료 14일·7일 전 이메일·메신저 알림
  • 도메인 등록 만료도 같은 곳에서 함께 감시
  • 담당자 바뀌어도 알림 수신자는 공용 메일로

이것만으론 부족

  • 인증기관의 만료 안내 메일만 믿기(스팸함·퇴사자 메일로 감)
  • 캘린더에 날짜만 적어두기
  • “자동이니까 괜찮겠지”
외부에서 매일 접속해 ‘남은 일수’를 보는 방식이 가장 단순하고 확실합니다. 서버 안의 스크립트는 서버가 바뀌면 함께 사라집니다.

앱이 있다면 — API 서버 인증서를 따로 챙기기

홈페이지는 멀쩡한데 앱만 안 되는 경우가 있습니다. 앱이 쓰는 API 서버(api.example.com)의 인증서가 홈페이지와 다른 서버·다른 인증서라서, 그쪽만 만료된 거예요. 앱은 브라우저처럼 ‘경고를 무시하고 계속’이 없어서 연결 실패로 바로 멈춥니다. 또 앱에 인증서를 고정(pinning)해 둔 경우엔 인증서를 갱신해도 앱 업데이트 없이는 연결이 안 되니, 핀을 쓸 땐 교체 계획을 함께 세워야 합니다.

점검 목록: 홈페이지 도메인 / API 서버 도메인 / 관리자 페이지 도메인 / 이미지·파일 CDN 도메인 — 각각 인증서가 다를 수 있습니다. 전부 만료일을 적어두세요. 오래된 앱 전체를 점검하는 순서는 오래된 앱 보안 점검 5가지에 있습니다.

자주 묻는 질문

SSL 인증서는 무료로 설치할 수 있나요?

네. Let's Encrypt 같은 무료 인증서로 대부분의 홈페이지·API 서버에 충분합니다. 유효기간이 90일이라 자동 갱신 설정이 필수이고, 많은 호스팅·클라우드가 이 무료 인증서를 자동으로 발급·갱신해 줍니다.

자동 갱신을 설정했는데 왜 만료됐나요?

갱신 후 웹서버 재시작(reload) 훅이 없어서 새 인증서를 못 읽었거나, DNS·방화벽이 바뀌어 발급 검증이 실패했거나, 서버 이전 때 타이머가 함께 안 옮겨진 경우가 흔합니다. certbot renew --dry-run과 갱신 로그로 원인을 확인하세요.

카페24·가비아 호스팅은 어떻게 하나요?

호스팅 관리 화면에 보안서버(SSL) 메뉴가 있어 무료 또는 유료 인증서를 신청하고 자동 갱신을 켤 수 있습니다. 메뉴 이름과 위치는 호스팅사마다 달라서 ‘보안서버 인증서’ 항목을 찾아 만료일과 자동 갱신 여부를 확인하세요.

앱 서버 인증서도 같은 방법인가요?

방법은 같지만, 앱은 경고를 무시할 수 없어 만료 즉시 연결이 끊깁니다. API 서버 도메인의 만료일을 홈페이지와 별도로 관리하고, 인증서 고정(pinning)을 쓰고 있다면 교체 전에 앱 업데이트 계획을 함께 세워야 합니다.

인증서·도메인 만료, 다음엔 미리 알게 해두세요

사이트·앱 도메인 목록만 주시면 각 인증서 만료일과 자동 갱신 상태를 확인하고, 만료 전에 알림이 가도록 모니터링을 붙여드립니다.

무료 점검 문의 → appmonster.co.kr

문의: appmonster.kr@gmail.com

함께 보기: 도메인·SSL 만료로 앱·웹이 먹통일 때 · 오래된 앱 보안 점검 5가지 · 방치된 앱 점검 체크리스트 · iOS 인증서 만료로 앱이 안 열릴 때