본문 바로가기

리눅스

Let's Encrypt SSL 인증서를 DNS(Domain Name System) 방식으로 발급하는 방법

반응형

Let's Encrypt SSL 인증서를 DNS(Domain Name System) 방식으로 발급하는 방법

이번에는 Let's Encrypt SSL 인증서를 DNS(Domain Name System) 방식으로 발급하는 방법에 대해 알아보겠습니다. DNS 방식은 certbot을 사용하여 DNS 인증서를 발급하고 DNS TXT 레코드를 통해 인증서를 검증하는 방식입니다.

 

DNS 방식으로 SSL 인증서를 발급하는 과정은 다음과 같습니다.

  1. certbot을 설치합니다.
  2. DNS 제공자에게 DNS API 키를 발급받습니다.
  3. certbot을 이용하여 DNS 인증서를 발급합니다.
  4. DNS TXT 레코드를 추가하여 인증서를 검증합니다.

아래는 Ubuntu 18.04에서 DNS 방식으로 Let's Encrypt SSL 인증서를 발급하는 방법입니다.

1. certbot 설치

먼저, certbot을 설치합니다.

$ sudo apt-get update
$ sudo apt-get install certbot python3-certbot-dns-<dns-provider>

<dns-provider>에는 사용하는 DNS 제공자의 이름을 입력합니다. 예를 들어, AWS Route53을 사용하는 경우 다음과 같이 입력합니다.

$ sudo apt-get install certbot python3-certbot-dns-route53

2. DNS API 키 발급

DNS API 키를 발급받기 위해서는 DNS 제공자의 관리 페이지에서 DNS API 설정을 찾아야 합니다. DNS 제공자마다 설정 방법이 다르므로, DNS 제공자의 문서를 참고하여 설정합니다.

DNS API 키를 발급받은 후, certbot을 실행할 때, --dns-<dns-provider>와 --dns-<dns-provider>-credentials 옵션을 추가하여 DNS API 키를 사용할 수 있도록 설정합니다.

3. DNS 인증서 발급

DNS 인증서를 발급하기 위해서는, 아래와 같은 명령어를 실행합니다.

$ sudo certbot certonly \
    --dns-<dns-provider> \
    --dns-<dns-provider>-credentials /path/to/credentials.ini \
    -d example.com \
    -d www.example.com \
    --preferred-challenges dns

<dns-provider>는 사용하는 DNS 제공자의 이름입니다.

 

/path/to/credentials.ini는 DNS API 키가 저장된 파일 경로입니다.

 

-d example.com -d www.example.com는 인증서를 발급할 도메인 이름을 입력합니다. 여러 개의 도메인 이름을 입력하려면, -d 옵션을 여러 번 사용합니다.

 

--preferred-challenges dns는 DNS 방식으로 인증서를 발급하도록 설정합니다.

 

위 명령어를 실행하면, certbot은 DNS API를 통해 DNS TXT 레코드를 추가하고, Let's Encrypt 서버에서 인증서를 발급받습니다. 인증서는 /etc/letsencrypt/live 디렉토리에 저장됩니다.

4. DNS TXT 레코드 추가

DNS TXT 레코드를 추가하여 인증서를 검증해야 합니다. DNS TXT 레코드는 DNS 제공자의 관리 페이지에서 추가할 수 있습니다. DNS 제공자마다 추가 방법이 다르므로, DNS 제공자의 문서를 참고하여 추가합니다.

 

추가해야 할 DNS TXT 레코드는 certbot 실행 결과에 출력됩니다. 아래와 같이 certbot 실행 결과에서 DNS TXT 레코드를 찾아 복사합니다.

Please deploy a DNS TXT record under the name
_acme-challenge.example.com with the following value:

4GhLn1sJQ4y0sP6o4-9V-vXuEL2r-tV7EBuAaGltw

Before continuing, verify the record is deployed.

Waiting for verification...
Verification completed successfully.

위 예시에서는 _acme-challenge.example.com 이름으로 DNS TXT 레코드를 추가해야 합니다. 값은 4GhLn1sJQ4y0sP6o4-9V-vXuEL2r-tV7EBuAaGltw입니다.

 

DNS TXT 레코드를 추가한 후, 다음과 같은 명령어를 실행하여 인증서를 검증합니다.

$ sudo certbot renew --dry-run --preferred-challenges dns

위 명령어에서 --dry-run 옵션은 인증서 갱신을 테스트하는 옵션입니다. --preferred-challenges dns 옵션은 DNS 방식으로 검증하도록 설정합니다.

 

인증서 검증에 성공하면, SSL 인증서를 사용할 수 있습니다. 웹 서버에서 SSL 인증서를 설정하고 HTTPS 프로토콜을 사용할 수 있도록 설정합니다.

 

DNS 방식으로 SSL 인증서를 발급하는 방법은, 웹 서버와 도메인 이름을 분리한 경우나 웹 서버에서 certbot을 실행할 수 없는 경우 유용합니다. DNS 방식은 DNS API 키를 사용해 DNS TXT 레코드를 추가하여 인증서를 검증하기 때문에, 웹 서버에서 인증서 발급에 필요한 권한을 가지고 있지 않아도 SSL 인증서를 발급할 수 있습니다.

 

728x90
반응형