본문 바로가기

나만의 모음집

certbot 인증서 관련 명령어 모음집

반응형

포스트 목적

배포 시 사용한 Certbox 을 이용한 SSL 인증서가 곧 만료된다고 하여  이참에 참고할 만한 명령어를 모아두고자 작성되었습니다.

Certbot 설치

운영체제에 따라 Certbot을 설치하는 명령어가 다릅니다. 일반적으로 다음과 같은 명령어를 사용합니다

Ubuntu/Debian

sudo apt update
sudo apt install certbot
sudo apt install python3-certbot-nginx  # Nginx 플러그인
sudo apt install python3-certbot-apache  # Apache 플러그인

 

CentOS/RHEL

sudo yum install certbot
sudo yum install python3-certbot-nginx  # Nginx 플러그인
sudo yum install python3-certbot-apache  # Apache 플러그인

 

인증서 발급

Certbot을 사용하여 인증서를 발급하는 방법은 웹 서버에 따라 다릅니다. 일반적으로 가장 많이 사용하는 웹 서버인 Nginx와 Apache를 기준으로 설명합니다.

Nginx

sudo certbot --nginx -d example.com -d http://www.example.com

Apache

sudo certbot --apache -d example.com -d http://www.example.com

스탠드얼론 (서버 없이)

sudo certbot certonly --standalone -d example.com -d http://www.example.com

인증서 갱신

Let's Encrypt 인증서는 기본적으로 90일 동안 유효합니다. 자동 갱신을 설정하지 않았다면, 수동으로 갱신할 수 있습니다.

모든 인증서 갱신

sudo certbot renew

갱신 시 시뮬레이션 (테스트)

앞서 명령어를 사용하여 갱신을 시도했을 때 에러가 발생하지 않는지를 미리 테스트할 때 사용하는 명령어 입니다.

sudo certbot renew --dry-run

인증서 삭제

더 이상 사용하지 않는 도메인의 인증서를 삭제할 수 있습니다.

특정 도메인의 인증서 삭제

sudo certbot delete --cert-name example.com

 

기타 명령어

인증서 목록 확인

sudo certbot certificates

인증서 디버그 정보 확인

sudo certbot --version
sudo certbot --help

웹 서버 재시작 (필요 시)

인증서 갱신 후 웹 서버를 재시작해야 할 때가 있습니다.

Nginx

sudo systemctl restart nginx

Apache

sudo systemctl restart apache2

자동 갱신 설정

자동 갱신을 위해 cron 작업을 설정할 수 있습니다.

 자동 갱신 스크립트 생성

자동 갱신을 위한 스크립트를 만들어 둘 수 있습니다. 이 스크립트는 인증서를 갱신한 후 웹 서버를 재시작하는 작업을 포함할 수 있습니다.

스크립트 파일 생성

참고로 아래 명령어를 사용해서 nano 로 편집기를 실행한 경우 Ctrl + O 를 누르면 저장이 되고, 파일 이름이 하단에 표시 됩니다. 정상적인 파일 이름이 표시되는 것을 확인했다면 Enter 를 누른 후 Ctrl + X 를 입력하여 편집기를 닫을 수 있습니다.

sudo nano /etc/cron.daily/certbot-renew

스크립트 내용 작성

스크립트 내용에 인증서 갱신 명령어와 웹 서버 재시작 명령어를 추가합니다.

#!/bin/sh
certbot renew --quiet
systemctl reload nginx   # Nginx를 사용하는 경우
# systemctl reload apache2   # Apache를 사용하는 경우 (위 명령어 대신 사용)

스크립트에 실행 권한 부여

sudo chmod +x /etc/cron.daily/certbot-renew

crontab을 이용한 자동 갱신 설정

crontab을 이용하여 자동 갱신 작업을 설정할 수도 있습니다. crontab은 특정 시간에 주기적으로 명령을 실행할 수 있도록 설정할 수 있는 도구입니다.

crontab 파일 편집

sudo crontab -e

갱신 작업 추가

다음 내용을 추가하여 매일 자정에 갱신 작업을 시도하도록 설정합니다. 참가로 renew 의 경우 인증서가 30일 미만으로 남았을 때 실제 갱신을 시도합니다. 아래 크론이 자정마다 실행되더라도 실제 인증서 갱신은 renew 내부적으로 적용된 설정에 의해 인증서 만료 30일 전에만 이루어집니다.

0 0 * * * /usr/bin/certbot renew --quiet && /bin/systemctl reload nginx
# 0 0 * * * /usr/bin/certbot renew --quiet && /bin/systemctl reload apache2   # Apache를 사용하는 경우

 

자동 갱신 설정 확인

설정이 제대로 되었는지 확인하기 위해 다음 명령어를 사용할 수 있습니다.

crontab 작업 확인

sudo crontab -l


추가한 갱신 작업이 목록에 있는지 확인합니다.

로그 확인

자동 갱신 작업이 제대로 수행되었는지 확인하기 위해 로그 파일을 확인할 수 있습니다.

sudo tail -f /var/log/letsencrypt/letsencrypt.log

 

도움이 된 자료

https://abbo.tistory.com/319

 

LetsEncrypt SSL 인증서 갱신/삭제방법 및 자동갱신 적용하기

SSL 인증서는 HTTPS 과 상관관계가 있습니다. 적용된 도메인 서버가 SSL 인증서 만료시에는 HTTP 연결로 라우팅되어 위험한 페이지라고 표시가 됩니다. 이를 방지하기 위해서 SSL 인증서를 갱신하는

abbo.tistory.com

 

https://certbot.eff.org/instructions?ws=nginx&os=arch

 

Certbot Instructions

Tagline

certbot.eff.org

 

https://medium.com/@youngminhong/certbot-%EC%9C%BC%EB%A1%9C-nginx-%EC%97%90-ssl-%EC%A0%81%EC%9A%A9-b2da0d2ad870

 

Certbot 으로 NGINX 에 SSL 적용하기

항상 조직내 담당자들이 해 오던 일인데, 아르바이트로 만든 사이트에 SSL 을 적용할 필요가 있어서 직접 하게 되었다. 인터넷에 널리고 널린게 Let’s Encrypt 에서 무료로 발급된 SSL 인증서를 nginx

medium.com

 

 

반응형