app.yml로 cerbot 구성하기?

안녕하세요,

제 사이트는 Cloudflare를 사용하고 있으며, 전반적으로 문제가 없습니다. 하지만 https checker에서 확인해보니 다음과 같은 오류가 표시됩니다.

https 443: Error: A call to SSPI failed, see inner exception.

Cloudflare SSL을 비활성화하고 대신 certbot을 사용하려고 합니다. 이를 위해 Cloudflare 모듈을 다음과 같이 설치해야 합니다:

certbot certonly \
  --dns-cloudflare \
  --dns-cloudflare-credentials ~/.secrets/certbot/cloudflare.ini \
  -d example.com \
  -d www.example.com

이 certbot 명령어를 Discourse의 템플릿 어디에, 또는 app.yml 파일의 어디에 넣어야 할까요?

또한 Cloudflare 접근을 위한 파일이 필요하며, 해당 파일은 chmod 600으로 설정되어야 합니다.

~/.secrets/certbot/cloudflare.ini

이러한 사항을 어떻게 달성할 수 있는지 조언을 부탁드립니다.

감사합니다!

Discourse를 어떻게 설치하셨나요? 표준 설치 방식으로 진행하셨다면 기본적으로 Let’s Encrypt에서 발급된 인증서를 받게 됩니다. 하지만 Cloudflare를 프록시로 사용하는 경우에는 이 인증서가 작동하지 않습니다.

Let’s Encrypt 템플릿을 확인하여 제안하신 대로 수정해 보실 수 있을 것입니다.

Jay님,

맞습니다. 이 작업을 진행 중이지만, 불행히도 프로그래밍이나 bash 스크립트에 대한 경험이 많지 않아서 이 문제를 해결하기가 어렵습니다… certbot과 Let’s Encrypt를 사용하여 이 작업을 수행할 수 있는 모듈을 찾지 못했습니다. 아마도 아래 코드에 우리의 코드를 추가할 수 있을 것 같습니다.

          # Try to issue the cert again if something goes wrong
          issue_cert "4096" "--force"
        fi

        LE_WORKING_DIR="${LETSENCRYPT_DIR}" $$ENV_LETSENCRYPT_DIR/acme.sh \
          --installcert \
          -d $$ENV_DISCOURSE_HOSTNAME \
          --fullchainpath /shared/ssl/$$ENV_DISCOURSE_HOSTNAME.cer \
          --keypath /shared/ssl/$$ENV_DISCOURSE_HOSTNAME.key \
          --reloadcmd "sv reload nginx"

아래 코드로 대체하는 것입니다:


certbot certonly \
  --dns-cloudflare \
  --dns-cloudflare-credentials ~/.secrets/certbot/cloudflare.ini \
  -d example.com \
  -d www.example.com

코딩에 경험이 있는 분이 Let’s Encrypt 인증서를 포함하도록 이 코드를 통합해 주실 수 있기를 바랍니다.

Discourse에서 certbot을 사용할 이유는 없습니다. 표준 설치 가이드는 Let’s Encrypt 인증서를 자동으로 발급합니다.

그 이유는 Let’s Encrypt SSL을 CloudFlare와 호환되게 만들기 위해서입니다.