SSL 인증서의 위험
Source: Hacker News
Bazel SSL 인증서 만료 사고
어제, 구글의 Bazel 팀은 매우 즐거운 박싱 데이를 보내지 못했습니다. 아래 스크린샷은 GitHub 이슈에서 확인할 수 있듯이 , 와 에 대한 SSL 인증서가 만료된 상황을 보여줍니다.
사용자에게 미친 영향
만료된 인증서 때문에 Bazel을 사용하는 사용자들의 빌드 워크플로가 중단되었으며, 다음과 같은 오류 메시지를 보게 되었습니다:
ERROR: Error computing the main repository mapping: Error accessing registry https://bcr.bazel.build/: Failed to fetch registry file https://bcr.bazel.build/modules/platforms/0.0.7/MODULE.bazel: PKIX path validation failed: java.security.cert.CertPathValidatorException: validity check failed
사고 요약
완화 조치 후, Xùdōng Yáng은 GitHub 티켓에 사고에 대한 간단한 요약을 남겼습니다:
자동 갱신이 새로운 서브도메인 추가로 인해 깨졌고, 갱신 실패에 대한 알림이 어떤 이유로든 전송되지 않았습니다.
SSL 인증서가 위험한 이유
“만료된 SSL 인증서”라는 말을 시니어 소프트웨어 엔지니어에게 하면 그들의 표정을 보게 됩니다. 이 업계에서는 자동 인증서 갱신을 사용하던 조직에서도 만료된 인증서 때문에 문제를 겪은 사례가 많습니다. 실제로 이번 사례는 자동 인증서 갱신 시스템이 실패한 예시입니다!
- SSL 인증서는 근본적으로 위험한 기술입니다.
- 운영 경험은 문제가 발생하기 전까지는 제한적입니다.
- 장애가 발생하면 팀은 진단과 해결을 위해 처음부터 시작해야 합니다.
- 이번 사고에서는 이 분야에 익숙하지 않은 Bazel 팀원들이 문서를 찾아보고 권한을 확보하느라 분주했습니다.
팀에 로컬 SSL 인증서 전문가가 있더라도, 해당 인원들은 휴일이라 사무실에 없었습니다. “설정하고 잊어버리는” 자동화 솔루션 덕분에 지식이 팀 전체에 전파되지 않았고, 시스템이 정상 작동하던 것이 갑자기 멈추면 바로 문제에 직면하게 됩니다.
장애 모드 특성
- 장애 모드는 우아한 감소(graceful degradation)와는 정반대입니다.
- 한 순간은 모든 것이 정상인데, 다음 순간 모든 HTTP 요청이 실패합니다.
- SSL 인증서가 만료에 가까워지고 있다는 자연스러운 신호가 운영자에게 제공되지 않습니다.
- 변경이 시간 기반이며 모든 사용자를 동시에 영향을 주기 때문에 스테이징이 불가능합니다.
즉, SSL 인증서는 100 % 사용자가 겪는 심각한 장애(만료)라는 예상된 실패 모드를 가지고 있으며, 운영자에게는 임박한 위험에 대한 자연스러운 피드백이 없습니다. 자동 인증서 갱신을 사용하면, 응답자가 인증서 갱신 경험이 없을 가능성이 더욱 높아집니다.
이러한 문제들이 계속 우리를 물어뜯는 것이 이상할까요?

