안녕하세요,
포럼은 여기 있습니다: https://forum.survivingeconomicabuse.org/
SSL 인증서가 만료되어 이제 접근할 수 없다고 합니다.
지난 여름에 사이트를 설정했고 포럼은 보안이 적용되어 있었지만, 인증서를 갱신하지 못한 것 같습니다(추측입니다). 인증서를 강제 갱신하는 방법에 대한 여러 스레드를 찾아보았지만 아무것도 작동하지 않았습니다. 기존 인증서를 삭제하고 앱을 다시 구축하라는 제안도 있었지만, 그것도 실패했습니다.
이 문제에 대해 조언을 주실 수 있는 분이 있을까요? 저는 명령줄 사용에 익숙하지만 전문가라고는 할 수 없습니다.
감사합니다!
pfaffman
(Jay Pfaffman)
2월 4, 2022, 12:48오후
2
재구축이 필요합니다.
cd /var/discourse
./launcher rebuild app
pfaffman:
./launcher rebuild app
몇 번 재구성을 시도해 봤지만 성공하지 못했는데, 혹시 모를까 봐 다시 시도해 봅니다
재구성을 시도해 봤는데, 안타깝게도 사이트는 그대로입니다.
흥미롭네요, 이제 http:// 아래에서 기본 Apache 페이지가 표시되고 있어요? 좀 이상하지 않나요?
아니요, 그렇지 않습니다. SSL이 만료되었기 때문에 http로만 브라우저에서 접속할 수 있습니다.
pfaffman
(Jay Pfaffman)
2월 4, 2022, 2:21오후
8
이는 서버에서 Apache가 실행 중임을 의미하며, Apache를 제거하거나 비활성화해야 합니다. 또한 여러 번 재빌드를 시도했다면 속도 제한(rate limit)이 걸려 일주일 동안 새로운 인증서를 발급받을 수 없을 가능성이 높습니다.
Canapin
(Coin-coin le Canapin)
2월 4, 2022, 2:31오후
9
틀린 부분이 있으면 알려주세요: 오류를 확인하려면 /var/discourse/shared/standalone/letsencrypt/acme.sh.log도 살펴볼 수 있습니다.
Apache를 제거했지만 여전히 포럼에 접근할 수 없습니다.
이 시점에서 문제를 완전히 파악하기 위해 다른 방법으로 해볼 수 있는 것이 있을까요?
Canapin
(Coin-coin le Canapin)
2월 4, 2022, 2:44오후
12
제가 아는 한, 기본적으로 Discourse는 https 없이 작동하지 않습니다.
다만, /var/discourse/container/app.yml 파일에서 해당 줄에 #을 추가하여 주석 처리하고 앱을 다시 빌드해 보시는 건 어떨까요?
# - "templates/web.ssl.template.yml"
# - "templates/web.letsencrypt.ssl.template.yml"
서버에 root 권한으로 로그인되어 있나요? 어떻게 접속하고 계신가요?
사실 이전에 주석 처리해 두었기 때문에 다시 복원하고 재빌드했지만 아무런 변화가 없습니다.
DigitalOcean에서 root 계정으로 로그인되어 있습니다.
Canapin
(Coin-coin le Canapin)
2월 4, 2022, 3:19오후
14
서버에 다른 애플리케이션이 없다면, 서버를 새로고침(포맷/리셋)하여 깨끗한 상태로 만든 후 Discourse를 다시 설치하고(백업 파일을 미리 다운로드하세요!) Discourse 백업을 복원하면 됩니다.
하지만 Jay가 말했듯이,
그럼에도 불구하고 궁금한 점이 있습니다. 이 경우 app.yml 파일에서 SSL 관련 줄을 주석 처리하면 포럼이 HTTP로 작동할까요? 그리고 일주일 후 해당 줄의 주석을 해제하고 재빌드를 수행하면 정상적으로 작동하는 인증서를 받을 수 있을까요?
pfaffman
(Jay Pfaffman)
2월 4, 2022, 3:52오후
15
시도했을 때 어떤 일이 발생합니까?
다음 명령을 시도해 보셨나요?
./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
명령을 실행하면 파일 또는 디렉터리가 없다는 오류가 발생합니다.
stuartleech:
이렇게 하면 권한이 거부됩니다…
sudo를 사용하여 시도해 보세요:
sudo nano /var/discourse/shared/standalone/letsencrypt/acme.sh.log
IAmGav
(Gavin Perch)
2월 7, 2022, 10:36오후
18
@stuartleech 문제 해결이 아직 안 된 것 같네요. 도와드릴 일이 있을까요?
pfaffman
(Jay Pfaffman)
2월 7, 2022, 11:30오후
19
죄송합니다, 이 내용이어야 했습니다:
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 문제를 해결할 수 있었습니다. 감사합니다!