SSL 인증서 재발급은 제 때 하자 - net::ERR_CERT_DATE_INVALID

낙경·2024년 7월 20일

코끼리 개발 일지

목록 보기
6/7

상황

4월 중순에 프로젝트를 일부 마무리하고, co-kkiri 사이트를 배포했다.
이 때, https 통신을 위해 ssl 인증서를 'certbot'을 통해 발급받고 nginx config에 연결하였다.

certbot?

무료로 ssl인증서를 받게 도와주는 라이브러리
Let's Encrypt 인증서를 발급해준다.

무료 인증서의 단점

원본 게시글

인증서의 유효 기간이 90일인 이유는 무엇인가요? 2015년 11월 9일 - Josh Aas, ISRG 전무 이사


인증서의 유효 기간이 90일인 이유에 대해 가끔 질문을 받습니다. 이런 질문을 하는 사람들은 보통 90일이 너무 짧다고 우려하며 다른 CA처럼 1년 이상 지속되는 인증서를 제공했으면 좋겠다고 합니다.

웹에서 90일은 새로운 것이 아닙니다. Firefox 텔레메트리에 따르면 TLS 트랜잭션의 29%가 90일 인증서를 사용합니다. 이는 다른 어떤 기간보다 많은 수치입니다. 저희의 관점에서는 이렇게 짧은 인증서 수명에는 두 가지 주요 이점이 있습니다:

키 도난 및 잘못된 발급으로 인한 피해를 제한합니다. 도난당한 키와 잘못 발급된 인증서의 유효 기간이 짧기 때문에 사용 편의성을 위해 반드시 필요한 자동화를 촉진할 수 있습니다. 전체 웹을 HTTPS로 전환할 경우 시스템 관리자가 계속 수동으로 갱신을 처리할 수는 없습니다. 발급과 갱신이 자동화되면 짧은 수명이 긴 수명보다 편리하지 않을 것입니다. 이러한 이유로 저희는 90일보다 긴 수명의 인증서를 제공하지 않습니다. 저희 서비스가 아직 초기 단계이고 많은 가입자에게 자동화가 익숙하지 않다는 점을 고려하여 필요한 경우 수동으로 갱신할 수 있는 충분한 시간을 허용하는 수명을 선택했습니다. 구독자는 60일마다 갱신하는 것이 좋습니다. 자동 갱신 도구가 널리 배포되고 잘 작동하면 더 짧은 기간을 고려할 수도 있습니다.

결론적으로, 갱신주기가 길면, 인증서 키를 탈취당해서 문제가 발생할 가능성이 크기 때문에, 인증서의 기간은 짧게(권장 60일, 제공 90일)가져가고 주기적으로 자동화를 통한 재발급을 해야한다는 것이다.

하지만 나는 하지 않았다..^^

사실 만료가 곧 될 것이라는 건 알고 있었다.
하지만 최근에 잠시 취직(퇴사했지만)도 했었고, 그 이후에도 취업준비로 바쁘다보니 뭐 문제있겠어?하고 소홀히 여겼다.

사이트에 안들어가질 때까진...

백엔드와 통신을 제대로 못한다?

사이트에 들어왔는데, 프론트의 데이터는 모두 잘 받아왔으나 백엔드와의 통신에서 문제가 있음을 알게되었다.

사이트는 그려져있는데, api 통신을 통해 받아올 데이터들이 없었고, 그려져있지도 않았다.

개발자도구를 열어보니 다음과 같은 오류문구를 볼 수있었다.

원인

보니, 낯설지만 낯익은 (원인이 단번에 떠오르는) 에러를 볼 수 있었다.

ERR_CERT_DATE_INVALID

이 오류는 SSL 인증서의 유효 기간이 만료되었음을 나타낸다. 브라우저가 해당 사이트의 인증서가 더 이상 유효하지 않다고 판단한 것이다.

프론트엔드와 백엔드의 차이

프론트엔드 서버의 경우, 브라우저가 사용자에게 경고를 표시하지만 "고급" 옵션을 통해 계속 진행할 수 있게 해준다. 그래서 프론트엔드 데이터는 로드될 수 있었다.

반면, 백엔드 서버와의 통신은 JavaScript를 통한 API 호출로 이루어지는데, 브라우저가 이를 자동으로 차단한다. 보안상의 이유로 스크립트에 의한 요청은 인증서 오류를 무시할 수 없기 때문이다.

해결

결국, 인증서 만료로 인해 프론트엔드와 백엔드 간의 안전한 HTTPS 통신이 불가능해져 데이터를 주고받지 못하는 상황이 발생한 것이다.

이 문제를 해결하기 위해서는 만료된 SSL 인증서를 갱신해야했다. 앞으로는 이런 상황을 방지하기 위해 인증서 자동 갱신 시스템을 구축하는 것이 좋겠다.

잘 해결된 모습

이번 일을 통해 시스템 유지보수의 중요성을 다시 한번 깨달았다. 아무리 바쁘더라도 기본적인 인프라 관리에 소홀해서는 안 된다는 교훈을 얻었다.

참고자료

SSL의 유효기간이 90일인 이유

2개의 댓글

comment-user-thumbnail
2024년 7월 20일

글이 깔끔하고 재밌어요! :)

1개의 답글