내 사이트에 접속했는데, 갑자기 브라우저 화면에 뻘건 글씨로 ‘주의 요함’이나 ‘연결이 비공개로 설정되어 있지 않습니다’가 뜬 적 있으신가요?
순간 심장이 덜컹 내려앉죠. 방문자들 다 도망가는 소리가 들리는 것 같고요. 보통 무료 SSL 인증서의 유효기간인 90일이 지나서 생기는 참사입니다.
특히 최근에 AWS EC2에서 Amazon Linux 2023(AL2023)과 Apache 조합으로 서버를 올리신 분들이라면, 예전 구글링 자료들 따라 하다가 막히는 구간이 무조건 하나 생깁니다. 오늘 제가 직접 삽질하며 뚫어낸 초간단 해결 및 영구 자동 갱신 세팅법을 싹 다 정리해 드립니다. 그냥 이대로만 복사해서 붙여넣으세요!
1. AL2023의 숨겨진 함정, crontab이 없다고?

인증서를 90일마다 내가 직접 갱신할 순 없으니, 서버가 알아서 체크하고 연장하게 만들어야겠죠? 보통 리눅스에서 자동 스케줄을 걸 때 crontab을 씁니다.
그런데 AL2023 인스턴스에서 당당하게 터미널에 sudo crontab -e를 치면? command not found라는 어이없는 에러를 뱉어냅니다.
당황하지 마세요. AL2023은 서버를 가볍게 유지하려고 기본 스케줄러 데몬을 아예 빼버렸거든요. 우리가 직접 설치하고 켜주면 그만입니다. 터미널에 아래 두 줄을 차례대로 쳐주세요.
sudo dnf install cronie -y sudo systemctl enable --now crond이제 스케줄러를 사용할 준비가 완벽하게 끝났습니다.
2. 90일의 굴레 벗어나기, 자동 갱신 스케줄 등록

이제 서버가 매일 알아서 만료일을 확인하고 인증서를 갱신하도록 명령을 내려줍시다. 다시 터미널에 아래 명령어를 쳐서 스케줄 편집기를 열어주세요.
sudo crontab -e편집기가 열리면 맨 아랫줄에 빈칸을 만들고, 아래의 코드를 그대로 복사해서 붙여넣습니다. (키보드 i를 누르면 입력 모드로 바뀝니다.)
0 0,12 * * * /usr/bin/certbot renew --quiet --post-hook "systemctl reload httpd"다 넣으셨으면 ESC 키를 누르고 :wq를 친 다음 엔터를 때려서 저장하고 나옵니다.
이 한 줄이 무슨 뜻이냐면, 매일 자정과 정오에 조용히 갱신 체크를 하고, 갱신에 성공하면 웹 서버(Apache)를 살짝 리로드해서 새 인증서를 적용하라는 뜻입니다. 이제 SSL 만료 걱정은 평생 안 하셔도 됩니다.
3. 발등의 불 끄기, 당장 멈춘 사이트 살려내기

위의 세팅은 앞으로의 평화를 위한 거고, 지금 당장 접속이 안 돼서 뻗어있는 내 사이트는 바로 수동 갱신을 때려서 인공호흡을 해줘야 합니다.
터미널에 이 명령어를 바로 입력하세요.
sudo certbot renew화면에 Congratulations 성공 메시지가 떴다면 1차 성공입니다. 저는 여기까지 해도 사이트가 정상적으로 인증된 걸로 바뀌었습니다. 하지만 여러분의 사이트는 인증이 안되었다면 다음과 같이 서버를 재시작해주세요. 인증서 파일만 바뀌었지, 돌아가고 있는 아파치 서버는 아직 옛날 인증서를 쥐고 있거든요. 서버를 재시작해서 갱신된 내역을 멱살 잡고 끌어올려야 합니다.
sudo systemctl restart httpd끝났습니다! 이제 브라우저에서 시크릿 창을 하나 새로 띄우고 내 사이트에 들어가 보세요. 주소창 옆에 영롱한 자물쇠 마크가 돌아와 있을 겁니다. 다들 고생하셨습니다!
