certbot 및 DNS 챌린지를 사용하여 도메인 갱신


9

독립형 방법을 사용하여 여러 도메인에 대해 여러 SSL 인증서를 작성했습니다. 서버 통합없이 인증서에만 관심이 있습니다.

그들은 이제 갱신을위한 것입니다. 그래서 나는 달렸다.

certbot -d example.com --manual --preferred-challenges dns certonly

그리고 각 도메인에 대한 지침을 따랐습니다 (각 도메인에 필요한 DNS 항목 추가). 이런 식으로 서버를 중지하지 않고 새 인증서를 얻었습니다.

내가 모호하게 이해 한 것은 DNS 챌린지를 사용하여 인증서를 자동으로 갱신하는 현재 방법이 없다는 것입니다. 아니면 "수동"방법으로 인증서를 자동으로 갱신 할 수 없습니까?

어쨌든 나는이 스크립트를 썼다 :

#!/bin/bash

for i in renewal/*;do
  n=${i:8:-5};
  echo $n;
  # echo "\n" | certbot --text --agree-tos -d $n --manual --preferred-challenges dns --expand --renew-by-default  --manual-public-ip-logging-ok certonly;
done

이 시점에서 renewal디렉토리의 모든 도메인에는 다음이 있습니다.

인증 자 = 수동

과:

pref_challs = dns-01

질문 :

  • 이제 ... "certbot renew"을 실행하면 스크립트를 사용하지 않고 모든 인증서를 자동으로 갱신합니까?

  • 실제로 DNS 챌린지를 사용하여 새 인증서를 실제로 만드는 방법은 무엇입니까?

답변:


4

업데이트 된 답변 (아래의 원래 답변 참조)

원래의 대답에서 나는 renew명령을 사용할 때 제공 한 스크립트가 필요하지 않다는 사실에 중점을 두었습니다 . 그러나이 renew시나리오에서 명령이 실제로 적용 가능한지 확인하지 못했습니다 .

주석 상태의 cdhowie 및 bobpaul certbot renew은 dns challenge와 함께 비 대화식 모드이므로 --manual-auth-hook매개 변수 를 통해 스크립트를 제공해야합니다 . 해당 스크립트는 TXT레코드 를 설정할 수 있어야합니다 . --manual-cleanup-hook매개 변수 를 통해 나중에 정리할 다른 스크립트를 제공 할 수도 있습니다 .

이러한 매개 변수를 제공하면 상호 작용없이 전체 프로세스가 자동으로 실행됩니다.

이러한 매개 변수를 제공하지 않으면 certbot이 실패합니다.

/opt/certbot # certbot renew --force-renewal
Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/foobar.w9f.de.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Could not choose appropriate plugin: The manual plugin is not working; there may be problems with your existing configuration.
The error was: PluginError('An authentication script must be provided with --manual-auth-hook when using the manual plugin non-interactively.',)

수동 모드를 통해 인증서를 갱신하려면 인증서 획득에 사용한 명령을 다시 실행해야합니다. 이 경우 certonly명령은 현재 인증서 / 구성을 보지 않고 대신 -d매개 변수 또는 대화식 모드로 도메인 이름을 제공해야하므로 스크립트는 좋은 옵션 입니다.


"certbot renew"을 실행할 때 스크립트를 사용하지 않고 모든 인증서를 자동으로 갱신합니까?

TL; DR : 그렇습니다.

certbot문서를 보자 .

버전 0.10.0부터 Certbot은 임박한 만료에 대해 설치된 모든 인증서를 확인하고 갱신을 시도하는 갱신 작업을 지원합니다. 가장 간단한 형태는 단순히

certbot 갱신

여태까지는 그런대로 잘됐다.

이 명령은 30 일 이내에 만료되는 이전에 얻은 인증서를 갱신하려고 시도합니다.

이것은 귀하의 질문에 대답해야합니다. 주의 : certbot인증서를 다른 디렉토리로 이동하는 상황을 얼마나 잘 처리 할 수 있는지 잘 모르겠습니다 .

같은 단락에서 나중에 :

다른 플러그인 또는 옵션을 지정하지 않으면 인증서를 처음 발행 할 때 사용한 것과 동일한 플러그인 및 옵션이 갱신 시도에 사용됩니다. 달리 certonly, renew여러 인증서에 작용 항상 각자가 주변의 만료 여부를 고려한다.

그렇습니다. certbot스크립트의 도움없이 모든 인증서를 갱신해야합니다.


실제로 DNS 챌린지를 사용하여 새 인증서를 만들려면 어떻게해야합니까?

게시물 시작 부분에 게시 한 명령에 어떤 문제가 있습니까? certbot -d example.com --manual --preferred-challenges dns certonlydns 챌린지를 사용하여 example.com에 대한 인증서를 획득합니다.

인증서를 만드는 단계는 다음과 같습니다.

  • certbot게시 한 명령을 실행하십시오.
  • 명령이 DNS TXT 레코드를 표시 할 때까지 기다리십시오.
  • 해당 TXT 레코드 작성
  • certbot명령을 계속하십시오
  • 지정된 도메인에 대한 인증서를받습니다.
  • TXT 레코드를 삭제하십시오 (생성에만 필요하고 갱신을 위해 새 레코드 만 필요하므로)

전체 프로세스를 자동화하려면 몇 가지 DNS 공급자 를 지원하는 lego 와 같은 도구를 살펴볼 수 있습니다 .


환상적이며 몇 달 안에 작동하는지 알려줍니다!
Merc


예, 일반적으로을 사용하지 마십시오 --manual. 전체 목적은 --manual대화식 모드를 강제하는 것입니다. 그러나 옵션 certonly없이 aws 또는 digitalocean과 같은 DNS 플러그인을 사용할 수 있으며 --manual90 일 전에 자동으로 갱신됩니다.
bobpaul

입력 해 주셔서 감사합니다. 답변을 업데이트했습니다.
malte
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.