GoDaddy DNS를 사용하고 있다면, Let's Encrypt --manual 모드에서 --manual-auth-hook 옵션을 사용하여 인증서를 자동 갱신하려면 다음 단계를 수행해야 합니다.
GoDaddy API 키 생성: Let's Encrypt에서 GoDaddy DNS를 자동으로 구성하기 위해서는 GoDaddy API 키가 필요합니다. GoDaddy Developer 사이트에 가입하고 API 키를 생성해야 합니다. API 키를 생성하는 방법은 GoDaddy Developer 사이트의 문서를 참조하십시오.
GoDaddy API 키를 사용하는 스크립트 작성: GoDaddy API 키를 사용하여 DNS 레코드를 추가/삭제하는 스크립트를 작성해야 합니다. 이 스크립트는 --manual-auth-hook 옵션에 지정할 수 있습니다. 이 스크립트는 GoDaddy API를 사용하여 Let's Encrypt 서버에서 전달된 DNS 레코드 정보를 자동으로 처리합니다. 스크립트를 작성하는 방법은 GoDaddy Developer 사이트의 문서를 참조하십시오.
스크립트는 다음과 같습니다.
#!/bin/bash
# godaddy-auth-hook-script.sh
# Set GoDaddy API credentials
export GD_Key="YOUR_GODADDY_API_KEY"
export GD_Secret="YOUR_GODADDY_API_SECRET"
# Extract the domain name from the command-line argument
DOMAIN="$1"
# Extract the DNS challenge details from the environment variables
TXT_NAME="_acme-challenge.${DOMAIN}."
TXT_VALUE="$CERTBOT_VALIDATION"
# Call the GoDaddy API to add the DNS TXT record
curl -X PUT -H "Authorization: sso-key ${GD_Key}:${GD_Secret}" \
-H "Content-Type: application/json" \
-d "[{\"name\": \"${TXT_NAME}\", \"type\": \"TXT\", \"data\": \"${TXT_VALUE}\", \"ttl\": 600}] " \
"https://api.godaddy.com/v1/domains/${DOMAIN}/records/TXT/${TXT_NAME}"
위 스크립트는 GoDaddy API를 사용하여 _acme-challenge DNS TXT 레코드를 동적으로 생성합니다. CERTBOT_VALIDATION 환경 변수는 Let's Encrypt 서버에서 전달된 도메인 인증을 위한 값입니다. 이 값은 _acme-challenge DNS TXT 레코드의 TXT_VALUE 값으로 사용됩니다.
위 스크립트는 다음과 같이 --manual-auth-hook 옵션으로 지정하여 사용할 수 있습니다.
certbot certonly --manual --manual-auth-hook /path/to/godaddy-auth-hook-script.sh -d example.com
위 명령어에서 /path/to/godaddy-auth-hook-script.sh는 위에서 작성한 GoDaddy API를 사용하여 DNS 레코드를 처리하는 스크립트의 경로를 나타냅니다. example.com은 인증서에 포함할 도메인 이름입니다.
실행시 다음과 같이 에러가 발생할 수 있습니다.
Saving debug log to /var/log/letsencrypt/letsencrypt.log
/etc/nginx/sites-enabled/godaddy-auth-hook-script.sh-hook command manual-auth exists, but is not executable.
이 에러는 godaddy-auth-hook-script.sh 스크립트 파일이 실행 가능한 파일이 아니기 때문에 발생합니다. 이 스크립트 파일은 manual-auth 명령어를 실행하기 위한 훅 스크립트이며, 이 에러는 이 스크립트 파일이 실행되지 않을 때 발생합니다.
해결 방법으로는 해당 스크립트 파일에 실행 권한을 부여해야 합니다. chmod 명령어를 사용하여 스크립트 파일에 실행 권한을 부여할 수 있습니다.
위 단계를 따르면 GoDaddy DNS를 사용하는 Let's Encrypt --manual 모드에서 --manual-auth-hook 옵션을 사용하여 인증서를 자동 갱신할 수 있습니다.
다음은 실행 권한을 부여하는 예시입니다:
chmod +x /etc/nginx/sites-enabled/godaddy-auth-hook-script.sh-hook
위 명령어를 실행하면 godaddy-auth-hook-script.sh 파일이 실행 가능한 파일이 됩니다. 이후에 manual-auth 명령어를 실행할 때는 해당 스크립트 파일이 실행되어 작업이 수행됩니다.