728x90
반응형

Certbot란?

Certbot은 수동으로 관리되는 웹사이트에서 Let's Encrypt 인증서를 자동으로 사용하여 HTTPS를 활성화하는 무료 오픈 소스 소프트웨어 도구이다. Certbot은 전자 프론티어 재단(Electronic Frontier Foundation, EFF) 에 의해 만들어졌다.
 
간단히 말해서 HTTPS 인증서를 커멘드 명령어만으로 Nginx등에 설정할 수 있는 도구라고 보면된다.
 

 

Let's Encrypt 인증서는 신뢰할 수 있는 인증기관인가?

Let's Encrypt는 무료로 SSL/TLS 인증서를 발급하는 오픈 소스 인증 기관 중 하나로 신뢰할 수 있는 인증기관이다.
 
 

설치방법

  • Ubuntu 22.04

 
공식문서를 참조하면 좋을 것이다. 설치방법은 Snap 패키지 관리자를 통한 설치를 권장하고 있다.

Certbot 스냅은 x86_64, ARMv7 및 ARMv8 아키텍처를 지원합니다. 대부분의 사용자가 스냅을 통해 Certbot을 설치할 것을 강력히 권장하지만 여기에서 대체 설치 지침을 찾을 수 있습니다 .

1. snap 패키지 설치

snap은 패키지 관리자로 프로그램 실행에 필요한 패키지등을 모두 포함하고 있어 활용도가 높다.

$ sudo apt update
$ sudo apt install snapd

2. 기존 Cerbot 제거

$ sudo apt-get remove certbot

3. snap으로 Cerbot 설치

$ sudo snap install --classic certbot

4. 명령어 복사

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

5. 인증서 설치

$ sudo certbot --nginx -d <domain>

 
설치 완료 후 nginx 설정 파일을 열어보면 아래와 같이 자동으로 발급이 된 것을 확인할 수 있다.

server {
        server_name <도메인>;
        location / {
                proxy_pass http://127.0.0.1:<포트번호>;
                client_max_body_size 200m;
                proxy_redirect off;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/<도메인>/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/<도메인>/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}

 

인증서 갱신

Certbot은 60일마다 인증서를 갱신한다.
시스템의 Certbot 패키지는 인증서가 만료되기 전에 자동으로 갱신하는 cron 작업 또는 시스템 타이머와 함께 제공된다.
/etc/cron.d에 자동으로 갱신 시켜주는 커멘드가 추가되어 있다. 구성을 변경하지 않는 한 Certbot을 다시 실행할 필요가 없다. 다음의 명령을 실행하여 인증서 자동 갱신을 테스트할 수 있다.

$ sudo certbot renew --dry-run

 
아래와 같은 명령어로 인증서 갱신이 주기적으로 실행되는지 확인이 가능하다.

$ /etc/crontab/
$ /etc/cron.*/*
$ systemctl list-timers

 
타이머를 조회해보면 아래와 같이 목록에서 확인할 수 있다.

$ systemctl list-timers

NEXT                        LEFT           LAST                        PASSED       UNIT                           ACTIVATES                       
...
Thu 2023-08-10 08:16:00 UTC 8h left        Wed 2023-08-09 22:04:01 UTC 2h 10min ago snap.certbot.renew.timer       snap.certbot.renew.service
...

 
 
배치 작업이 안되어 있을 경우 수동으로 아래와 같이 crontab -e 명령어를 통하여 1달마다 갱신하도록 처리할 수 있다.
 

0 0 1 * * certbot renew --renew-hook "sudo service nginx restart"
728x90
반응형

'DevOps > 네트워크' 카테고리의 다른 글

네트워크 OSI 7계층  (0) 2021.10.25