본문 바로가기
리눅스&OS

https 보안 인증서 let's encrypt에서 certbot으로 재발급 받기

by developer's warehouse 2023. 11. 22.

웹서버를 운영하고 있거나, 홈페이지형 블로그를 운영하시는 분들은 https에 사용하는 보안 인증서가 필수 입니다. 보안인증서는 3개월마다 만료되어 재발급 받아야 합니다. 이 글에서는 let's encrypt를 통해 https 보안 인증서를 재발급 받는 방법에 대해서 설명합니다.

 

https 보안 인증서 let's encrypt에서 certbot으로 재발급 받기 썸네일

let's encrypt 인증서 갱신하기

보안 인증서는 3개월마다 만료됩니다. 그러므로 매 3개월 마다 재발급을 받아 주어야 합니다. 안 그러면 인증서 만료로 https를 사용할 수 없습니다.

리눅스에서 Let's Encrypt 보안 인증서를 재발급받으려면 Certbot을 사용하는 것이 일반적입니다.

Certbot은 Let's Encrypt에서 제공하는 무료 보안 인증서 발급 및 관리 도구입니다.

다음은 Certbot을 사용하여 보안 인증서를 재발급받는 방법입니다:

1. Certbot이 설치되어 있지 않다면, 먼저 설치해야 합니다.

- Ubuntu의 경우, 다음과 같은 명령을 사용하여 설치할 수 있습니다:

     sudo apt-get update
     sudo apt-get install software-properties-common
     sudo add-apt-repository universe
     sudo add-apt-repository ppa:certbot/certbot
     sudo apt-get update
     sudo apt-get install certbot python-certbot-apache

- CentOS의 경우, 다음과 같은 명령을 사용하여 설치할 수 있습니다:

     sudo yum install certbot python-certbot-apache

2. Certbot이 이미 설치되어 있다면, 다음 명령을 사용하여 인증서를 갱신(재발급)할 수 있습니다:

        sudo certbot renew

이 명령은 인증서가 만료되기 30일 전에는 갱신을 시도하지 않습니다.

즉시 갱신을 시도하려면 '--force-renewal' 옵션을 붙여주세요:

        sudo certbot renew --force-renewal

참고로 Certbot은 자동 갱신 설정도 지원합니다. 이를 설정하면 인증서를 수동으로 갱신할 필요가 없어집니다.

자동 갱신을 설정하려면 다음 명령을 사용하세요:

   sudo certbot renew --dry-run

인증서 강제 갱신하기

저의 경우, 인증서가 아직 갱신 기간이 아니라서 갱신이 시도되지 않았다는 메시지가 보입니다.

Let's Encrypt 인증서는 만료일이 30일 이내일 경우에만 갱신이 가능합니다.
그러나 만약 테스트나 다른 이유로 인증서를 강제로 갱신하고 싶다면, 아래와 같이
`--force-renewal` 옵션을 사용해 갱신할 수 있습니다.
sudo certbot renew --force-renewal
그러나 이 명령은 주의해서 사용해야 합니다.
이 명령을 너무 자주 사용하면 Let's Encrypt의 요청 제한에 걸릴 수 있기 때문입니다.
또한, Nginx 설정에서 인증서를 사용하려면, 인증서 갱신 후 Nginx를 재시작해야 합니다.
다음 명령을 사용해 인증서 갱신 후 Nginx를 재시작할 수 있습니다:
sudo certbot renew --force-renewal --post-hook "systemctl reload nginx"

위의 명령은 인증서를 갱신한 후 Nginx를 재시작합니다.

이렇게 하면, 인증서가 갱신되자마자 Nginx에서 새 인증서를 사용할 수 있습니다.

아래와 같이 강제 갱신해 주었습니다.

(base) eddy_lee@instance-1:~$ sudo certbot renew --force-renewal --post-hook "systemctl reload nginx"
Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/ai.2story.org.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Plugins selected: Authenticator nginx, Installer nginx
Renewing an existing certificate

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
new certificate deployed with reload of nginx server; fullchain is
/etc/letsencrypt/live/ai.2story.org/fullchain.pem
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/vs.2story.org.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Plugins selected: Authenticator nginx, Installer nginx
Renewing an existing certificate

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
new certificate deployed with reload of nginx server; fullchain is
/etc/letsencrypt/live/vs.2story.org/fullchain.pem
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/yt.2story.org.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Plugins selected: Authenticator nginx, Installer nginx
Renewing an existing certificate

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
new certificate deployed with reload of nginx server; fullchain is
/etc/letsencrypt/live/yt.2story.org/fullchain.pem
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Congratulations, all renewals succeeded. The following certs have been renewed:
  /etc/letsencrypt/live/ai.2story.org/fullchain.pem (success)
  /etc/letsencrypt/live/vs.2story.org/fullchain.pem (success)
  /etc/letsencrypt/live/yt.2story.org/fullchain.pem (success)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Running post-hook command: systemctl reload nginx
facebook twitter kakaoTalk kakaostory naver band shareLink