Certbot 반수동 작동

Certbot 반수동 작동

기본 인프라가 제어되는 반자동 설정에 Certbot을 사용할 수 있는지 묻고 싶습니다.Certbot이 아닙니다.

나는 Certbot이 Let's Encrypt와 통신하여 챌린지를 발행한다는 것을 이해합니다. 이는 기본적으로 Certbot이 내 IP 주소 또는 DNS에서 찾아야 하는 토큰입니다.

나는 Apache 서버에 대한 모든 권한을 가지고 있지만 이는 매우 사용자 정의된 다중 호스팅 설정(SNI 필요!)이며 Certbot이 내 Apache 구성을 엉망으로 만드는 것을 원하지 않으며 루트로 실행되는 것도 원하지 않습니다. 나중에 sudoers로 돌아갈 것입니다.

mta-sts.example.org구현하는 동안 이미 에 대한 호스팅 공간을 설정했습니다 .메일 전송 에이전트의 엄격한 전송 보안

/home/djechelon/srv/www/domains/mta-sts.example.org나는 매크로를 사용하여 Apache에게 이것이 내 작업공간이라고 말했습니다.

  • htdocs: HTTP를 통해 제공되는 콘텐츠
  • htdocs-secure: HTTPS를 통해 제공되는 콘텐츠
  • 로그: Apache VHost 로그
  • SSL: 여기가 mta-sts.example.org.{key,crt,ca_bundle?}존재하는 곳이에요

Certbot에게 다음 작업을 수행하라고 말하고 싶습니다.

  1. LE로부터 챌린지 획득
  2. 아래의 적절한 파일에 챌린지를 작성하면 /home/djechelon/..../htdocsApache가 이를 제공할 준비가 됩니다.
  3. Apache 때문에 LE에게 챌린지 검증을 요청하세요.~이다도전할 준비가 되어있습니다
  4. 에 인증서를 씁니다 /home/djechelon/..../ssl/. LE가 ca_bundle을 제공하지 않으면 문제 없습니다. 제 입장에서는 선택 사항입니다.
  5. Apache reload 실행(곧 sudoers 설정이 있을 예정)

webroot이 경우 플러그인을 사용해야 한다는 것을 이해했지만 파일과 인증서를 저장할 위치를 포함한 모든 옵션에 대한 명령줄 도움말을 찾는 데 어려움을 겪었습니다.

문서에서는 프로세스가 대화형이라고 가정하므로 챌린지 파일을 수동으로 복사하고 Certbot에게 도메인 유효성 검사를 위해 LE에 문의하도록 요청해야 합니다.

저는 위의 간단한 스크립트를 실행하는 간단한 방법이 있어야 한다고 생각합니다. 이는 전체 IT 인프라가 존재하고(예: 실제로 자체 서버 소프트웨어를 실행하려는 경우) 잘 구성되어 있다는 가정 하에 실행됩니다.

도움이 필요하세요?

[편집] 지금은 이것을 대화식으로 호출했습니다.

 certbot certonly --webroot -d mta-sts.example.org --preferred-challenges http --work-dir /home/djechelon/etc/letsencrypt --logs-dir /home/djechelon/letsencrypt-logs --config-dir /home/djechelon/etc/letsencrypt

웹루트 디렉토리와 이메일(향후 갱신을 위한 매개변수로 전달하고 싶었던 것)을 요청했습니다. 이제 질문은 "나중에 cron을 사용하지 않고 대화식으로 이것을 어떻게 다시 실행할 수 있습니까?"가 될 수 있습니다.

답변1

나는 사용자의 홈 디렉터리( /home/djechelon/..../ssl/)에 인증서를 저장하지 않을 것입니다.사용자가 인증서 파일을 제거하면 Apache가 시작되지 않습니다.. 나는 Certbot이 웹 서버 구성을 망치지 않는 것이 더 낫다는 당신의 추론에 동의합니다. 그러나 현재는 당신이 피하려고 하는 것과 동일한 문제를 효과적으로 일으키는 것 같아서 경고하려고 합니다.

certonlyHTTP-01 챌린지나 로그 파일에 홈 디렉터리를 사용할 이유가 없으며, 이미 수행한 것처럼 모드 에서 Certbot을 사용하여 Apache에서 정적 구성을 사용할 수도 있습니다 .

자동 갱신을 위한 내 솔루션은 모든 HTTP-01 문제(에서 /etc/letsencrypt/renewal/example.com.conf)에 대해 동일한 작업 디렉터리를 사용하는 것입니다.

# renew_before_expiry = 30 days
version = 0.31.0
archive_dir = /etc/letsencrypt/archive/example.com
cert = /etc/letsencrypt/live/example.com/cert.pem
privkey = /etc/letsencrypt/live/example.com/privkey.pem
chain = /etc/letsencrypt/live/example.com/chain.pem
fullchain = /etc/letsencrypt/live/example.com/fullchain.pem

# Options used in the renewal process
[renewalparams]
authenticator = webroot
server = https://acme-v02.api.letsencrypt.org/directory
account = 0123456789abcdef0123456789abcdef
rsa_key_size = 4096
[[webroot_map]]
example.com = /var/www/letsencrypt
www.example.com = /var/www/letsencrypt

이 방법으로 모든 문제를 처리하는 전역을 추가하는 것이 가능 Alias하지만 필요한 가상 호스트에만 배치하는 것도 가능합니다.

<IfModule alias_module>
    Alias /.well-known/acme-challenge/ /var/www/letsencrypt/.well-known/acme-challenge/
</IfModule>

답변2

아마도 대화형 모드는 한 번만 실행될 것입니다. Certbot은 인증서가 저장되는 위치를 기억하며 이는 항상 작업 디렉토리 아래에 있습니다.

그렇게 나쁘지 않아. 내 솔루션은 /home/djechelon/srv/..../ssl/*심볼릭 링크로 대체하는 것이 었습니다.

간단히 말해서:

  1. 평소처럼 가상 호스팅을 설정하세요
  2. 명령을 사용하여 새 웹사이트에 대한 새 인증서를 얻습니다.
  3. 아파치를 다시 로드하세요(가상 호스트를 설정하려면 이것이 필요합니다).
  4. 갱신 시 certbot renew적절한 작업 디렉토리와 함께 사용하여 루트가 아닌 사용자로 실행

발급 명령

 certbot certonly --webroot -d mta-sts.example.org --preferred-challenges http --work-dir [non-root-workdir --logs-dir [non-root-workdir] --config-dir [non-root-workdir]

갱신 명령( cron아마도 -ned 가능)

 certbot renew --work-dir [non-root-workdir --logs-dir [non-root-workdir] --config-dir [non-root-workdir]

물론 갱신 시에는 최소한 Apache 재로드를 예약해야 합니다.

관련 정보