Linux

Certbot을 사용한 SSL 인증서 갱신 가이드(1): ERR_CERT_AUTHORITY_INVAL_ID 오류

JohnnyDeveloper 2024. 10. 8. 13:08

Certbot을 활용해 Ubuntu 서버에서 SSL 인증서를 자동으로 갱신하는 방법을 단계별로 안내합니다.

SSL 인증서 유효기간 만료 오류: ERR_CERT_AUTHORITY_INVAL_ID

Certbot을 사용한 SSL 인증서 갱신 가이드

SSL 인증서는 웹사이트 보안에 필수적입니다. 인증서를 정기적으로 갱신하지 않으면 사이트 방문자들이 ‘신뢰할 수 없는 사이트’ 경고를 받을 수 있습니다. 이번 포스트에서는 Certbot을 사용해 Ubuntu 서버에서 SSL 인증서를 자동으로 갱신하는 방법을 알아보겠습니다.

1. SSL 인증서 오류 해결: ERR_CERT_AUTHORITY_INVALID

SSL 인증서가 만료되었을 때 종종 발생하는 오류 중 하나가 ERR_CERT_AUTHORITY_INVALID입니다. 이 오류는 신뢰할 수 없는 인증 기관에서 발급된 인증서 또는 만료된 인증서에서 주로 발생합니다. 이를 해결하기 위해서는 인증서를 갱신해야 합니다.

Ubuntu 환경에서 Let’s EncryptCertbot을 사용하면 무료로 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 인증서 갱신은 웹사이트 보안 유지에 필수적이므로 자동화를 적극 활용해 효율적으로 관리하세요.

 

참고: https://www.owl-dev.me/blog/42