인증서 만료 사고는 왜 반복되는가

에릭슨은 2018년 인증서 만료로 영국·일본 이동통신망을 하루 세웠다. 마이크로소프트 Teams 는 2020년 2월, 스포티파이는 2020년 8월, 같은 이유로 죽었다. 이 회사들에 인증서 지식이 없어서가 아니다. 만료 사고는 기술 문제가 아니라 구조 문제라서 기술력만으로는 안 끊긴다.

반복되는 구조는 대체로 네 가지다.

1. 성공이 곧 망각인 작업

인증서 갱신은 성공하면 아무 일도 일어나지 않는다. 잘한 사람에게 보상이 없고, 잊은 사람에게만 청구서가 온다. 이런 작업은 사람의 주의력에 맡기면 반드시 잊힌다 — 1년에 한 번, 90일에 한 번 오는 일을 기억하는 것은 인간의 일이 아니다.

그래서 “달력에 적어두기”는 해결이 아니다. 달력을 적은 사람이 퇴사하고, 알림이 울린 날 하필 장애 대응 중이고, 메일함 규칙이 알림을 접어 넣는다. 개인의 기억을 시스템으로 바꾸지 않는 한 확률의 문제일 뿐이다.

2. 소유자가 없다 — 정확히는, 여럿이다

만료 사고 후 회고를 해보면 반드시 나오는 문장: “그건 저희 담당이 아닌 줄 알았어요.”

  • 인증서를 발급한 사람 (보안팀 or 그때 그 개발자)
  • 인증서가 설치된 서버를 관리하는 사람 (인프라팀)
  • 그 서버 위 서비스의 담당자 (개발팀)
  • 도메인을 관리하는 사람 (총무팀인 경우도 있다)

넷 다 “내 것”이라 생각하지 않는 자산이 인증서다. 특히 발급한 사람이 퇴사하면 그 인증서는 고아가 된다 — 갱신 알림 메일이 퇴사자 메일함으로 가는 것이 만료 사고의 가장 고전적인 시나리오다. 알림 수신처는 사람이 아니라 팀 주소여야 한다는 교훈은 모두가 사고 후에 배운다.

3. 인벤토리가 없다 — 아는 것만 지킬 수 있다

“우리 인증서 전부 몇 장이에요?“에 즉답할 수 있는 조직은 드물다. 웹서버 인증서는 알아도:

  • 로드밸런서에 직접 올린 것
  • 개발자가 테스트하다 그대로 운영에 들어간 것
  • 장비 관리 페이지, 내부 API, VPN, 메일 서버의 것
  • 협력사가 발급해 넣어준 것

은 목록 밖에 있다. 목록에 없는 인증서는 만료 감시도 없다. 사고는 늘 목록 밖에서 난다 — 목록 안의 것은 어쨌든 누군가 보고 있기 때문이다.

인벤토리를 손으로 만들면 만든 날부터 낡는다. 스캔으로 만들어야 하고, 새 도메인· 새 서비스가 생기면 자동으로 편입돼야 유지된다. 공개 서비스라면 CT 로그가 훌륭한 출발점이다 — 조직 도메인으로 발급된 인증서는 어차피 전부 공개 기록에 남는다.

4. 자동화를 “했다”와 “믿을 수 있다”는 다르다

“저희는 certbot 자동갱신 해요”는 절반의 안심이다. 자동갱신은 조용히 죽는다 — 타이머가 꺼지고, 챌린지 경로가 막히고, DNS 토큰이 만료된다. 자동화가 실패했다는 사실을 알려주는 건 자동화 자신이 아니다.

그래서 감시는 갱신 시스템과 독립적이어야 한다. 갱신을 수행하는 시스템에 감시까지 맡기면, 그 시스템이 죽는 순간 둘 다 죽는다. 바깥에서, 실제 서빙되는 인증서를, 갱신 주기보다 촘촘하게 보는 눈이 따로 있어야 한다. 기준도 만료일이 아니라 **“정상이라면 이미 갱신됐어야 하는 시점”**이다 — 만료 30일 전에 아직 옛 인증서면 그때가 알람이지, 만료 3일 전이 알람이면 주말이 껴 있는 순간 끝이다.

그래서 끊으려면

네 구조를 뒤집으면 그대로 처방이 된다.

  1. 기억 → 시스템: 사람이 기억할 일을 0으로. 갱신은 자동화, 예외만 사람에게
  2. 개인 → 역할: 알림 수신처는 팀 주소·채널. 인증서마다 소유 팀 명시
  3. 목록 → 스캔: 인벤토리는 자동 발견으로 만들고 유지. 목록 밖을 정기적으로 뒤질 것
  4. 갱신과 감시 분리: 외부에서 서빙 인증서를 직접 확인하는 독립 감시. 알람 기준은 “갱신됐어야 할 시점”

넷 중 조직이 가장 자주 빼먹는 것이 4번이다. 갱신 자동화는 다들 하는데, 그 자동화를 감시하는 층은 “언젠가”로 밀린다 — 첫 사고 전까지.

당장 시작하려면 도메인 하나를 진단 툴에 넣어보는 것으로 충분하다. 지금 몇 장이 30일 안에 만료되는지조차 모르는 상태가 1~3번이 무너져 있다는 신호다. 여러 도메인을 계속 봐야 하는 상황이면 — 그 감시 층을 만들고 있으니 툴 페이지에 이메일을 남겨두면 된다.