Cloudflare API를 활용해 Let’s Encrypt 인증서 받기

사용 환경 : Ubuntu 22.04 LTS

준비하기

필요한 플러그인을 설치해줍니다.

sudo apt install certbot python3-certbot-dns-cloudflare

Cloudflare API 키를 생성합니다.

이 링크에서 API 키를 확인할 수 있습니다.

앞에서 확인한 API 키를 저장할 파일을 생성합니다. 이메일과 API 키는 자신의 것으로 변경합니다.

sudo vi ~/.secret/cloudflare.ini
dns_cloudflare_email = email@email.com
dns_cloudflare_api_key = 방금 확인한 api key

이 키는 절대 남에게 보여서는 안 됩니다. 그렇기 때문에, 이 파일의 권한을 변경해 줍니다.

sudo chmod 700 ~/.secret/
sudo chmod 600 ~/.secret/cloudflare.ini

인증서 발급하기

이제 인증서를 발급할 준비가 되었습니다. 이제 이 명령어를 이용해 인증서를 발급합니다. -d 뒤에 오는 도메인은 자신의 도메인으로 변경합니다.

certbot certonly \
--server https://acme-v02.api.letsencrypt.org/directory \
--dns-cloudflare --dns-cloudflare-credentials ~/.secret/cloudflare.ini \
--preferred-challenges dns-01 \
-d sakede.su \
-d *.sakede.su

이런 글이 보이면 인증서 발급에 성공한 것입니다.

- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/sakede.su/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/sakede.su/privkey.pem

nginx 연동하기

nginx 서버 블록에 다음을 추가합니다. sakede.su는 자신의 도메인으로 변경해 줍니다.

listen 443 ssl;
ssl_certificate         /etc/letsencrypt/live/sakede.su/fullchain.pem;
ssl_certificate_key     /etc/letsencrypt/live/sakede.su/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/sakede.su/chain.pem;

Ubuntu 22.04에 Nginx 설치

집에 서버를 놔두고 웹 서버로 얼마 전까지 Apache를 사용했는데, OS를 재설치하면서 웹 서버를 Nginx로 사용하게 되었습니다. Nginx는 웹 서버 프로그램인데, Apache에 비해 가볍고 빠른 속도를 보여준다고 합니다.

Nginx 설치하기

서버의 패키지 목록을 업데이트합니다.

sudo apt update
sudo apt upgrade

Nginx를 설치합니다.

sudo apt install nginx

Nginx를 실행합니다.

sudo service nginx start

Nginx가 실행되고 있는지 확인할 수 있습니다.

sudo service nginx status

이제 주소창에 서버의 ip 또는 도메인을 입력해 보겠습니다. 아래와 같은 화면이 나오면 Nginx가 정상적으로 실행되고 있는 것입니다.

Nginx 랜딩 페이지.

설정 파일을 수정합니다.

sudo vi /etc/nginx/nginx.conf

이 구문이 없다면 추가헤줍니다.

include /etc/nginx/sites-enabled/*;

서버 블록을 만들어줍니다.

sudo vi /etc/nginx/sites-available/my.domain.com.conf
server {
  listen 80;
  server_name my.domain.com;
  location / {
    root /var/www/html;
    index index.html index.htm index.nginx-debian.html;
    try_files $uri $uri/ =404;
  }
}

방금 만든 서버 블록을 활성화합니다.

sudo ln -s /etc/nginx/sites-available/my.domain.com.conf /etc/nginx/sites-enabled/my.domain.com.conf

Nginx 설정 파일이 정상적으로 설정되어 있는지 확인합니다.

sudo nginx -t

Nginx를 재시작합니다.

sudo service nginx restart

이 블로그도 이렇게 만든 서버 위에서 돌아가고 있습니다.