Certbot을 사용한 SSL 인증서 갱신 가이드(1): ERR_CERT_AUTHORITY_INVAL_ID 오류
Certbot을 활용해 Ubuntu 서버에서 SSL 인증서를 자동으로 갱신하는 방법을 단계별로 안내합니다.
Certbot을 사용한 SSL 인증서 갱신 가이드
SSL 인증서는 웹사이트 보안에 필수적입니다. 인증서를 정기적으로 갱신하지 않으면 사이트 방문자들이 ‘신뢰할 수 없는 사이트’ 경고를 받을 수 있습니다. 이번 포스트에서는 Certbot을 사용해 Ubuntu 서버에서 SSL 인증서를 자동으로 갱신하는 방법을 알아보겠습니다.
1. SSL 인증서 오류 해결: ERR_CERT_AUTHORITY_INVALID
SSL 인증서가 만료되었을 때 종종 발생하는 오류 중 하나가 ERR_CERT_AUTHORITY_INVALID입니다. 이 오류는 신뢰할 수 없는 인증 기관에서 발급된 인증서 또는 만료된 인증서에서 주로 발생합니다. 이를 해결하기 위해서는 인증서를 갱신해야 합니다.
Ubuntu 환경에서 Let’s Encrypt와 Certbot을 사용하면 무료로 SSL 인증서를 발급받을 수 있으며, 이를 주기적으로 갱신하는 설정을 자동화할 수 있습니다.
2. Certbot 설치 및 설정
Certbot은 Let’s Encrypt와 같은 인증 기관(CA)에서 SSL 인증서를 발급받고 갱신하는 데 사용되는 도구입니다. Ubuntu 서버에서 Certbot을 설치하려면 다음과 같이 명령어를 실행합니다:
$ sudo apt update
$ sudo apt install certbot
Certbot 설치가 완료되면 이제 SSL 인증서를 발급받고, 자동으로 갱신되도록 설정할 수 있습니다.
3. Certbot을 사용한 SSL 인증서 발급
서버에 Certbot이 설치되면 Nginx 또는 Apache와 같은 웹 서버에 인증서를 발급할 수 있습니다. 아래는 Nginx를 사용하는 경우의 예시입니다.
$ sudo certbot --nginx -d example.com -d www.example.com
위 명령어는 example.com과 www.example.com 도메인에 대한 인증서를 발급하고 Nginx 설정을 자동으로 갱신합니다.
4. SSL 인증서 자동 갱신 설정
Certbot은 기본적으로 인증서를 자동으로 갱신할 수 있는 기능을 제공합니다. 하지만 서버가 새로운 인증서를 인식하도록 하기 위해 추가 설정이 필요합니다. 여기서 crontab을 활용해 주기적으로 인증서를 갱신하고 서버를 재시작하는 작업을 자동화할 수 있습니다.
$ sudo crontab -e
위 명령어를 실행해 crontab 파일을 열고 다음 내용을 추가합니다:
0 3 1 * * root certbot renew --quiet --deploy-hook "/path/to/restart_script.sh"
- 0 3 1 * *: 매달 1일 오전 3시에 작업을 실행하도록 스케줄링
- certbot renew --quiet: 인증서 갱신 시 필요한 출력만 표시하도록 설정
- --deploy-hook "/path/to/restart_script.sh": 인증서 갱신 후 서버 재시작을 위한 스크립트 실행
5. Certbot 갱신 후 서버 재시작
모든 서버가 SSL 인증서 갱신 후 반드시 재시작해야 하는 것은 아닙니다. 예를 들어, Nginx는 설정 파일을 재로딩하는 것만으로도 갱신된 인증서를 반영할 수 있습니다. 따라서 다음 명령어를 사용해 Nginx를 재시작하지 않고 설정을 다시 로드할 수 있습니다:
$ sudo nginx -s reload
이 명령어는 서버를 재시작하지 않고 설정만 새로 적용하므로 더 빠르고 안전한 방법이 될 수 있습니다.
6. Certbot 갱신 오류 해결
때때로 Certbot을 사용해 인증서를 갱신할 때 오류가 발생할 수 있습니다. 대표적인 오류로는 다음과 같은 경우가 있습니다:
- 도메인 소유권 인증 실패: 도메인 DNS 설정이 제대로 되어 있지 않을 때 발생할 수 있습니다.
- 인증서 만료 기간 초과: 인증서가 이미 만료된 경우 갱신이 실패할 수 있습니다.
이 경우, /var/log/letsencrypt/letsencrypt.log 로그 파일을 확인하거나 Certbot을 verbose 모드로 실행해 오류 원인을 확인할 수 있습니다.
$ sudo certbot renew --verbose
7. 재시작 Script 예시
#!/bin/bash
# Node.js 서버 재시작
echo "Restarting Node.js Server...."
# Node.js 서버 실행 중인 프로세스 종료
sudo pkill -f "node server/server"
# Node.js 서버 다시 시작
cd /home/ubuntu/node_server && nohup node server/server > out.log 2>&1 &
echo "Node.js server restarted."
8. 결론
Certbot을 사용하면 SSL 인증서를 손쉽게 갱신하고, 서버를 안전하게 유지할 수 있습니다. 특히 Let’s Encrypt와의 연계를 통해 무료로 인증서를 발급받고, 주기적인 자동 갱신 설정을 통해 관리 부담을 크게 줄일 수 있습니다. 정기적인 SSL 인증서 갱신은 웹사이트 보안 유지에 필수적이므로 자동화를 적극 활용해 효율적으로 관리하세요.