letsencrypt 를 이용한 SSL 인증서 발급 및 갱신
letsencrypt 를 이용한 SSL 인증서 발급 및 갱신
인증서 발급 방식
- Standalone
- 인증서 발급을 위한 가상 웹 서버를 잠시 실행하고, 인증서 발급이 완료되면 종료하는 방법
- 가장 간단한 방식으로 80, 443 포트이 개방되어있어야 함
- 자동 갱신 가능, 와일드 카드 도메인 사용 불가
1
sudo certbot certonly --standalone -d <도메인명> -d www.<도메인명>
- Webroot
- 사이트 디렉터리 내에 인증서 유효성을 확인할 수 있는 파일을 업로드하여 인증서를 발급하는 방법
- 자동 갱신 가능, 와일드 카드 도메인 사용 불가
1
mkdir -p /var/www/letsencrypt/.well-known/acme-challenge # 폴더 생생
1 2 3 4 5 6 7 8
## nginx 설정 server { # 아래와 같은 설정 추가 () location ^~ /.well-known/acme-challenge/ { default_type "text/plain"; root /var/www/letsencrypt; } }
1
sudo systemctl restart nginx # nginx 설정을 적용하기 위해 재시작
1
certbot certonly --webroot --webroot-path=/var/www/letsencrypt -d <도메인> # 인증서 발급
- DNS
- 도메인이 연결된 DNS의 TXT레코드를 이용해 인증받는 방식
- 와일드 카드 도메인 사용 가능
- 서버 관리자가 도메인 DNS를 관리/수정할 수 있어야 한다.
1
certbot certonly --manual -d *.[도메인] -d [도메인] --preferred-challenges dns-01 --server https://acme-v02.api # 인증서 발급
- 위 명령을 수행하면 DNS서버에 _acme-challenge.domain.com 이름의 TXT레코드를 추가하라고 나오게 되는데 사용중인 도메인 서버에 TXT레코드에 값을 추가해주면 된다.
Certbot 설치
1
2
sudo apt update
sudo apt-get install letsencrypt -y
인증서 발급
1
sudo certbot certonly --standalone -d <도메인명> -d www.<도메인명>
인증서 발급이 완료되면
/etc/letsencrypt/live/도메인명/
경로 아래에 관련 파일들이이 생성된다.
인증서 갱신
1
sudo certbot renew
인증서 갱신은 cron job을 이용하여 자동으로 갱신할 수 있다. 아래와 같이 cron job을 설정하면 매일 오전 3시에 인증서 갱신을 시도한다.
1
0 3 * * * /usr/bin/certbot renew --quiet
웹서버를 사용하는 경우, 인증서 갱신 후 웹 서버를 재시작해야 한다. 아래와 같이 certbot renew 명령어에 post-hook을 추가하여 인증서 갱신 후 자동으로 웹 서버를 재시작할 수 있다.
1
sudo certbot renew --post-hook "systemctl restart nginx"
This post is licensed under CC BY 4.0 by the author.