Let’s Encrypt SSL 인증서 발급 오류 DNS 문제(NXDOMAIN) 해결 방법

Let’s Encrypt를 이용해 무료 SSL 인증서를 발급 받아 사용하기 위해서 시스템을 세팅한 다음 발급을 시도하면 아래와 같이 DNS 오류로 발급이 되지 않는 경우가 있습니다.

위 오류는 domain.tld 와 www.domain.tld 도메인에 대한 인증서를 발급받는 과정에서 www.domain.tld 도메인에 대한 DNS의 응답이 없다는 메시지를 보이고 있는데요.

위와 같은 문제는 다음 3가지로 압축할 수 있으며 각 케이스별로 해결하는 방법에 대해 알아보겠습니다.

  • 웹서버 가상호스트의 root 디렉토리 설정 및 .well-known 디렉토리 접근이 가능한지
  • 도메인을 구매한지 얼마 되지 않았는지
  • 2차 도메인의 레코드가 A 레코드인지

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for domain.tld
http-01 challenge for www.domain.tld
Using the webroot path /var/www/html for all unmatched domains.
Waiting for verification…
Cleaning up challenges
Failed authorization procedure. www.domain.tld (http-01): urn:acme:error:connection :: The server could not connect to the client to verify the domain :: DNS problem: NXDOMAIN looking up A for www.domain.tld

가상호스트 .well-known 디렉토리 확인

Let’s Encrypt는 도메인과 IP를 확인해 SSL 인증서를 발급하는데 이때 .well-known/acme-challenge/ 디렉토리에 임시 파일을 쓰고 지워 인증하는 방식을 사용하고 있습니다. https의 구조를 보면 당연한 것인데요.

.well-known 디렉토리에 대한 접근 권한 또는 root 디렉토리 설정이 제대로 되어 있지 않다면 발급에 문제가 생깁니다.

Let's Encrypt NXDOMAIN 오류 해결 이미지 1

접근 권한을 간단하게 테스트 하는 방법은 .well-known/acme-challenge/ 하위에 적당한 텍스트 문서를 만들고 http://domain.ltd/.well-known/acme-challenge/file.txt 로 웹브라우저에서 접근하는 것입니다.

만일 해당 파일을 브라우저에서 확인할 수 없다면 설치할 웹서버의 가상호스트 설정이 잘못된 것입니다.

참고로 여러 도메인에 대한 루트 디렉토리는 같아도 상관 없습니다.

예로 리버스 프록시 서버에서 SSL을 담당한다면 실제 웹 구성 파일은 뒷단에 있기 때문에 단순 SSL 인증용 디렉토리를 하나 설정 후 여러 도메인을 같이 사용해도 무관합니다.

도메인을 구매한지 얼마 되지 않았다면

도메인을 구입한 다음 바로 Let’s Encrypt에서 SSL 받급을 시도하는 경우 Let’s Encrypt 서버에서 구매한 도메인의 레코드를 제대로 받아오지 못할 수도 있습니다.

DNS 서버의 쿼리가 퍼지기까지는 약간의 시간이 소요되며 도메인 등록 업체에서는 12시간을 얘기하고 있지만 실제로 30분 정도 기다리면 사용하는데 문제가 없습니다.

Let's Encrypt NXDOMAIN 오류 해결 이미지 2

사용자가 도메인 설정을 하다 보면 DNS 캐시 때문에 확인에 방해를 받을 수 있으니 객관적으로 확인하기 위해서 DNS Lookup Tool을 이용해 확인하면 되겠습니다.

2차 도메인의 레코드가 A 레코드인지

Let's Encrypt NXDOMAIN 오류 해결 이미지 3

가장 간과하기 쉬운 부분으로 2차 도메인이 CNAME 레코드로 설정되어 있을 경우에도 NXDOMAIN 오류가 발생합니다.

SSL은 웹서버 IP와 도메인을 대조해 인증하는 방식인데 CNAME은 IP 정보가 있는 A레코드에 대한 종속 개념이라 인증이 불가능 하므로 2차 도메인을 A 레코드로 지정한 다음 인증을 시도합니다.

Let's Encrypt NXDOMAIN 오류 해결 이미지 4

도메인 레코드를 변경한 후 letsencrypt certonly --webroot --webroot-path=/var/www/domain.ltd -d domain.ltd -d www.domain.ltd 명령어로 인증서를 다시 요청하면 기존에 받아져 있던 domain.ltd 인증서와 새로 발급 받을 www.domain.ltd 인증서를 합쳐 받을 수 있습니다.

추천 글

댓글

이메일 주소는 공개되지 않으며 댓글에 하나 이상의 URL이 포함될 경우 관리자 승인 후 공개됩니다.

댓글은 운영 정책에 따라 관리됩니다. (링크)