DNSZi 에 등록된 도메인 Let's Encrypt 인증서 acme.sh 로 생성하기
acme.sh 는 여러 DNS 서버에 대해 자동으로 Let's Encrypt 인증서를 발급해주는 기능을 제공하고 있다.
자세한 내용은 아래 링크 참고
https://github.com/Neilpang/acme.sh/wiki/dnsapi
Neilpang/acme.sh
A pure Unix shell script implementing ACME client protocol - Neilpang/acme.sh
github.com
국내에 무료로 DNS 서버를 제공해주는 곳은 DNSZi 가 있다.
그런데 API 를 제공하지는 않기 때문에 acme.sh 를 사용해서 자동으로 인증서를 발급받을 수 있는 방법이 없었다.
하지만 몇개월 전에 이를 가능하도록 DNSZi 에서 CNAME에 언더바 ('_') 를 넣을 수 있도록 했다.
아래 DNSZi 공지사항 참고.
https://dnszi.com/notice_view.html?no=5916&
DNSZi - 무료 네임서버(dns) 관리 서비스! 무료파킹서비스! 무료포워딩서비스!
회원별로 여러곳의 ISP에 분산되어 있는 5개의 네임서버 제공! 로그인하시면 회원님의 네임서버를 확인하실 수 있습니다!
dnszi.com
이를 이용해 Let's Encrypt 인증서를 발급 받아보자.
1. acme.sh 다운로드 및 설치
git clone https://github.com/Neilpang/acme.sh.git
cd ./acme.sh
./acme.sh --install
2. DuckDNS 설정
DuckDNS(https://www.duckdns.org/) 에 계정을 생성하고 도메인을 발급 받는다.
그리고 token 을 메모해 둔다.
3. DNSZi 에서 CNAME 설정
DNSZi 에서 Let's Encrypt 인증서를 적용할 도메인을 선택하고
CNAME 관리 탭으로 들어가서 아래와 같이 값을 입력한다.
CNAME 값 : _acme-challenge
목적저(연결) 도메인 : _acme-challenge.{DuckDNS 에서 발급받은 주소}
ex) DuckDNS에서 발급받은 주소가 mydomain.duckdns.org 라면 _acme-challenge.mydomain.duckdns.org 를 입력한다.
4. acme.sh 로 Let's Encrypt 인증서 발급받기
DNSZi는 API를 제공하지 않으므로 DuckDNS를 통해서 인증을 할 것이다.
이를 위해서 acme.sh 는 DNS alias mode를 지원한다.
자세한 내용은 아래를 참고.
https://github.com/Neilpang/acme.sh/wiki/DNS-alias-mode
Neilpang/acme.sh
A pure Unix shell script implementing ACME client protocol - Neilpang/acme.sh
github.com
DuckDNS 의 API를 사용할 것이므로 아래 링크에서 사용방법을 확인한다.
https://github.com/Neilpang/acme.sh/wiki/dnsapi#27-use-duckdnsorg-api
Neilpang/acme.sh
A pure Unix shell script implementing ACME client protocol - Neilpang/acme.sh
github.com
위 내용을 참고해서 acme.sh 명령어를 아래와 같이 수행한다.
DuckDNS_Token 은 위에서 메모해둔 DuckDNS의 Token을 입력한다.
CERT_FOLDER 는 인증서를 생성할 디렉토리를 지정한다.
-d 옵션 뒤에는 본인의 도메인 주소를 작성한다.
--challenge-alias 에는 DuckDNS 의 주소를 작성한다.
export DuckDNS_Token="aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"
export CERT_FOLDER="/home/ckhacker/cert"
acme.sh --insecure --issue --dns dns_duckdns \
-d mydomain.com \
--challenge-alias mydomain.duckdns.org \
--cert-file "$CERT_FOLDER/cert.pem" \
--key-file "$CERT_FOLDER/privkey.pem" \
--fullchain-file "$CERT_FOLDER/fullchain.pem" \
--capath "$CERT_FOLDER/chain.pem"
정상적으로 인증서가 발급되면 성공이다.
해당 인증서를 적용하면 된다.
Wildcard 인증서를 발급 받으려면 -d 옵션의 값을 *.mydomain.com 으로 하면 된다.
5. 인증서 갱신
인증서 발급 후 60일 뒤에 인증서를 갱신 할 수 있다.
아래의 명령어로 간단하게 갱신할 수 있다.
acme.sh --renew -d mydomain.com