Certbot란?
Certbot은 수동으로 관리되는 웹사이트에서 Let's Encrypt 인증서를 자동으로 사용하여 HTTPS를 활성화하는 무료 오픈 소스 소프트웨어 도구이다. Certbot은 전자 프론티어 재단(Electronic Frontier Foundation, EFF) 에 의해 만들어졌다.
간단히 말해서 HTTPS 인증서를 커멘드 명령어만으로 Nginx등에 설정할 수 있는 도구라고 보면된다.
![](https://blog.kakaocdn.net/dn/DfOix/btsqFtDuoP9/AgWgg7LT2amH6wGWMYzaAK/img.png)
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"
'DevOps > 네트워크' 카테고리의 다른 글
네트워크 OSI 7계층 (0) | 2021.10.25 |
---|