Discourse 접근 불가 - SSL 문제

안녕하세요,

포럼은 여기 있습니다: https://forum.survivingeconomicabuse.org/

SSL 인증서가 만료되어 이제 접근할 수 없다고 합니다.

지난 여름에 사이트를 설정했고 포럼은 보안이 적용되어 있었지만, 인증서를 갱신하지 못한 것 같습니다(추측입니다). 인증서를 강제 갱신하는 방법에 대한 여러 스레드를 찾아보았지만 아무것도 작동하지 않았습니다. 기존 인증서를 삭제하고 앱을 다시 구축하라는 제안도 있었지만, 그것도 실패했습니다.

이 문제에 대해 조언을 주실 수 있는 분이 있을까요? 저는 명령줄 사용에 익숙하지만 전문가라고는 할 수 없습니다.

감사합니다!

재구축이 필요합니다.

  cd /var/discourse
 ./launcher rebuild app

몇 번 재구성을 시도해 봤지만 성공하지 못했는데, 혹시 모를까 봐 다시 시도해 봅니다

재구성을 시도해 봤는데, 안타깝게도 사이트는 그대로입니다.

먼저 다음을 실행하세요

apt-get update
apt-get upgrade

흥미롭네요, 이제 http:// 아래에서 기본 Apache 페이지가 표시되고 있어요? 좀 이상하지 않나요?

아니요, 그렇지 않습니다. SSL이 만료되었기 때문에 http로만 브라우저에서 접속할 수 있습니다.

이는 서버에서 Apache가 실행 중임을 의미하며, Apache를 제거하거나 비활성화해야 합니다. 또한 여러 번 재빌드를 시도했다면 속도 제한(rate limit)이 걸려 일주일 동안 새로운 인증서를 발급받을 수 없을 가능성이 높습니다.

틀린 부분이 있으면 알려주세요: 오류를 확인하려면 /var/discourse/shared/standalone/letsencrypt/acme.sh.log도 살펴볼 수 있습니다.

Apache를 제거했지만 여전히 포럼에 접근할 수 없습니다.

이 시점에서 문제를 완전히 파악하기 위해 다른 방법으로 해볼 수 있는 것이 있을까요?

이것을 시도하면 권한이 거부됩니다…

제가 아는 한, 기본적으로 Discourse는 https 없이 작동하지 않습니다.

다만, /var/discourse/container/app.yml 파일에서 해당 줄에 #을 추가하여 주석 처리하고 앱을 다시 빌드해 보시는 건 어떨까요?

#  - "templates/web.ssl.template.yml"
#  - "templates/web.letsencrypt.ssl.template.yml"

서버에 root 권한으로 로그인되어 있나요? 어떻게 접속하고 계신가요?

사실 이전에 주석 처리해 두었기 때문에 다시 복원하고 재빌드했지만 아무런 변화가 없습니다.

DigitalOcean에서 root 계정으로 로그인되어 있습니다.

서버에 다른 애플리케이션이 없다면, 서버를 새로고침(포맷/리셋)하여 깨끗한 상태로 만든 후 Discourse를 다시 설치하고(백업 파일을 미리 다운로드하세요!) Discourse 백업을 복원하면 됩니다.

하지만 Jay가 말했듯이,


그럼에도 불구하고 궁금한 점이 있습니다. 이 경우 app.yml 파일에서 SSL 관련 줄을 주석 처리하면 포럼이 HTTP로 작동할까요? 그리고 일주일 후 해당 줄의 주석을 해제하고 재빌드를 수행하면 정상적으로 작동하는 인증서를 받을 수 있을까요?

시도했을 때 어떤 일이 발생합니까?

다음 명령을 시도해 보셨나요?

./launcher start app

하지만 아마도 다음 명령이 필요할 것입니다:

  ./launcher rebuild app

다만, 이전에 말씀드린 대로 이미 충분히 많은 회수를 재빌드하여 Let’s Encrypt의 속도 제한(rate limits)에 도달했을 가능성이 큽니다. 일주일 정도 기다리거나 여러 도메인으로 Let’s Encrypt 설정하기를 참고하여 다른 서브도메인(먼저 서버를 가리키는 DNS 항목을 생성해야 함)을 추가하고 다시 재빌드해 볼 수 있습니다.

다음 명령으로 nginx 오류를 확인할 수 있습니다:

  tail  /var/discourse/shared/standalone/logs/var-log/nginx/error.log

start app = “할 일이 없습니다. 컨테이너가 이미 시작되었습니다”

최근 추가 변경 사항 없이 재빌드했습니다.

다음 명령을 실행했습니다: ls -l /var/discourse/shared/standalone/ssl

새로운 인증서가 있는 것 같습니다.

tail /var/discourse/shared/standalone/logs/var-log/nginx/error.log

명령을 실행하면 파일 또는 디렉터리가 없다는 오류가 발생합니다.

sudo를 사용하여 시도해 보세요:
sudo nano /var/discourse/shared/standalone/letsencrypt/acme.sh.log

@stuartleech 문제 해결이 아직 안 된 것 같네요. 도와드릴 일이 있을까요?

죄송합니다, 이 내용이어야 했습니다:

root@forum:~# tail  /var/discourse/shared/standalone/log/var-log/nginx/error.log
2022/02/04 17:04:01 [emerg] 19332#19332: cannot load certificate "/shared/ssl/forum.survivingeconomicabuse.org.cer": PEM_read_bio_X509_AUX() failed (SSL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE)

현재 이 문제를 해결하고 있지만 여전히 SSL 관련 이슈가 있습니다. IP가 레이트 리밋(rate limit)에 걸린 것인지, 아니면 제가 인지하지 못하는 네트워크 또는 방화벽 문제인지는 판단하기 어렵습니다.

참고로, 이 방법으로 제 SSL 문제를 해결할 수 있었습니다. 감사합니다!