PowerDNS에서 암호화를 자동화하는 스크립트를 작성 중입니다(debian에서 실행되는 간단한 bash 쉘 스크립트입니다).
Certbot은 스크립트를 실행하고 호출하여 $CETBOT_VALIDATION 변수를 제공합니다.
나는 이미 하나의 주제를 읽었습니다.여기이는 필요성을 나타냅니다 '"content"'
. 작은따옴표 '
와 큰따옴표를 참고하세요 "
. (나는 이것을 코드의 여러 반복에서 시도했지만 소용이 없었습니다.) 확장된 변수를 따옴표로 묶어 출력하는 데 어려움을 겪고 있습니다. 다음은 제가 시도한 한 가지 접근 방식입니다.
pdnsutil add-record Example.com _acme-challenge txt 120 "\"%s\"" "$CERTBOT_VALIDATION"
\
그러나 이것을 bash 에서 출력하려면 "
.
출력 명령을 다음과 같이 만들고 싶습니다.
pdnsutil add-record Example.com _acme-challenge txt 120 "content"
이를 수행하는 가장 좋은 방법은 무엇입니까?
현재 출력되는 모든 항목에 오류가 발생합니다.
Error: Parsing record content (try 'pdnsutil check-zone'): Data field in DNS should start with quote (") at position 0 of ''yXtgt_2vlnrF7j2V-eTJZuSjXbswsGN97TQ0Zp3IynM''
답변1
앞으로 이 문제가 발생하는 모든 사람을 위한 잠재적인 답변으로 업데이트를 제공하겠습니다.
certbot 명령을 실행할 때:
certbot certonly --manual --preferred-challenges=dns --manual-auth-hook /etc/letsencrypt/customScripts/authenticator.sh -d *.example.com --dry-run
이제 스크립트 authenticater.sh는 다음과 같습니다.
#!/bin/bash
new='"'
new2=$new$CERTBOT_VALIDATION$new
pdnsutil add-record example.com _acme-challenge txt 120 $new2
echo $new2 > output.log
# Sleep to make sure the change has time to propagate over to DNS
sleep 25
이는 변수를 문자열로 연결하여 큰따옴표를 추가하는 방식으로 작동합니다. output.log는 변수가 다음과 같다는 것을 보여줍니다.
cat output.log
"RipQQbHO5pG95nzJjouCgTXJMrGTbLKQ5XsV5Zgn7uI"
및 certbot 보고서:
certbot certonly --manual --preferred-challenges=dns --manual-auth-hook /etc/letsencrypt/customScripts/authenticator.sh -d *.example.com --dry-run
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator manual, Installer None
Obtaining a new certificate
Performing the following challenges:
dns-01 challenge for example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NOTE: The IP of this machine will be publicly logged as having requested this
certificate. If you're running certbot in manual mode on a machine that is not
your server, please ensure you're okay with that.
Are you OK with your IP being logged?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: y
Output from authenticator.sh:
RipQQbHO5pG95nzJjouCgTXJMrGTbLKQ5XsV5Zgn7uI
New rrset:
_acme-challenge.example.com. IN TXT 120 "RipQQbHO5pG95nzJjouCgTXJMrGTbLKQ5XsV5Zgn7uI"
Error output from authenticator.sh:
Apr 05 10:51:41 Reading random entropy from '/dev/urandom'
Apr 05 10:51:41 gmysql Connection successful. Connected to database 'pdns' on '127.0.0.1'.
Apr 05 10:51:41 gmysql Connection successful. Connected to database 'pdns' on '127.0.0.1'.
Waiting for verification...
Cleaning up challenges
IMPORTANT NOTES:
- The dry run was successful.
그래서 이 문제는 해결된 것 같습니다.