letsencrypt 비활성화 실패 및 discourse-setup 실행 시 비정상적인 경고 발생

SSL 인증서 관련 재설정을 시도하고 있으며, Let’s Encrypt 무료 인증서를 비활성화하려고 합니다.
구매한 인증서가 있기 때문에 Google을 통해 몇 가지 작업을 찾았습니다.

app.yml을 직접 수정하고 /var/discourse/shared/standalone/ssl/ 디렉터리에서 키 및 인증서 파일을 확인했으며, 파일명이 설정 파일과 일치하는지 확인한 후 rebuild를 실행했는데, 여전히 Let’s Encrypt 인증서가 사용되는 상태로 실패했습니다.

nginx에 다음과 같은 오류 로그가 있습니다:


2021/09/25 16:37:26 [emerg] 48#48: cannot load certificate "/shared/ssl/ssl.crt": BIO_new_file() failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/shared/ssl/ssl.crt','r') error:2006D080:BIO routines:BIO_new_file:no such file)

2021/09/25 16:37:27 [emerg] 78#78: cannot load certificate "/shared/ssl/ssl.crt": BIO_new_file() failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/shared/ssl/ssl.crt','r') error:2006D080:BIO routines:BIO_new_file:no such file)

2021/09/25 16:37:28 [emerg] 80#80: cannot load certificate "/shared/ssl/ssl.crt": BIO_new_file() failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/shared/ssl/ssl.crt','r') error:2006D080:BIO routines:BIO_new_file:no such file)

2021/09/25 16:37:29 [emerg] 82#82: cannot load certificate "/shared/ssl/ssl.crt": BIO_new_file() failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/shared/ssl/ssl.crt','r') error:2006D080:BIO routines:BIO_new_file:no such file)

2021/09/25 16:37:30 [emerg] 95#95: cannot load certificate "/shared/ssl/ssl.crt": BIO_new_file() failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/shared/ssl/ssl.crt','r') error:2006D080:BIO routines:BIO_new_file:no such file)

2021/09/25 16:37:31 [emerg] 104#104: cannot load certificate "/shared/ssl/ssl.crt": BIO_new_file() failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/shared/ssl/ssl.crt','r') error:2006D080:BIO routines:BIO_new_file:no such file)

2021/09/25 16:37:32 [emerg] 106#106: cannot load certificate "/shared/ssl/ssl.crt": BIO_new_file() failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/shared/ssl/ssl.crt','r') error:2006D080:BIO routines:BIO_new_file:no such file)

해당 디렉터리에 파일이 있는지 확인했습니다.

root@discourse-test:/var/discourse/shared/standalone/ssl# ls -al ssl.*
-rw-r--r-- 1 root root 7868 Sep 25 16:24 ssl.cer
-rw------- 1 root root 1675 Sep 25 16:24 ssl.key

다음 URL에서 관련 토론을 찾았습니다:

Removing Let’s Encrypt from installation choice

./discourse-setup을 실행하면 다음과 같은 경고가 표시됩니다:

./discourse-setup: line 471: [: 1234567890123456: binary operator expected

Let’s Encrypt를 비활성화하거나 재설정 문제를 해결하는 방법에 대한 조언이 있을까요?

자신만의 인증서를 사용하는 방법에 대한 몇 가지 주제가 있습니다. 검색을 시도해 볼 수 있지만, 이 주제는 고급 설정 전용: Discourse Docker 설정에 SSL / HTTPS 허용입니다.

안녕하세요 pfaffman

답변 주셔서 감사합니다.
제공해 주신 정보에 대해 이미 참고 자료와 실험을 해 보았지만, 결과가 실패했습니다. nginx 서비스가 파일을 읽을 수 없습니다.

오류 메시지는 위와 같습니다:

2021/09/25 16:37:26 [emerg] 48#48: cannot load certificate "/shared/ssl/ssl.crt": BIO_new_file() failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/shared/ssl/ssl.crt','r') error:2006D080:BIO routines:BIO_new_file:no such file)

2021/09/25 16:37:27 [emerg] 78#78: cannot load certificate "/shared/ssl/ssl.crt": BIO_new_file() failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/shared/ssl/ssl.crt','r') error:2006D080:BIO routines:BIO_new_file:no such file)

2021/09/25 16:37:28 [emerg] 80#80: cannot load certificate "/shared/ssl/ssl.crt": BIO_new_file() failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/shared/ssl/ssl.crt','r') error:2006D080:BIO routines:BIO_new_file:no such file)

2021/09/25 16:37:29 [emerg] 82#82: cannot load certificate "/shared/ssl/ssl.crt": BIO_new_file() failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/shared/ssl/ssl.crt','r') error:2006D080:BIO routines:BIO_new_file:no such file)

2021/09/25 16:37:30 [emerg] 95#95: cannot load certificate "/shared/ssl/ssl.crt": BIO_new_file() failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/shared/ssl/ssl.crt','r') error:2006D080:BIO routines:BIO_new_file:no such file)

2021/09/25 16:37:31 [emerg] 104#104: cannot load certificate "/shared/ssl/ssl.crt": BIO_new_file() failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/shared/ssl/ssl.crt','r') error:2006D080:BIO routines:BIO_new_file:no such file)

2021/09/25 16:37:32 [emerg] 106#106: cannot load certificate "/shared/ssl/ssl.crt": BIO_new_file() failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/shared/ssl/ssl.crt','r') error:2006D080:BIO routines:BIO_new_file:no such file)

제 증서로 성공적으로 변경했습니다.

nginx 설정에는 crt 파일이 필요하지만, 계속 cer 파일을 설치하고 테스트하는 실수를 반복했습니다.
그래서 SSL 문제를 해결했습니다.

감사합니다

첫 몇 개의 게시글에서 눈에 띈 부분은

cannot load certificate "/shared/ssl/ssl.crt"

그리고
해당 디렉토리에 파일이 있는지 확인했습니다

root@discourse-test:/var/discourse/shared/standalone/ssl# ls -al ssl.*

경로의 /shared/ 이후 부분에 차이가 있음을 주목해 보세요. Nginx는 ssl.crt 파일이 shared/ssl/ 폴더에 있을 것으로 예상하고 있었습니다. 그런데 해당 파일은 shared/standalone/ 폴더에서 발견되었습니다. 즉, 파일이 nginx가 찾는 경로에 존재하지 않았던 것입니다.

@JimPas 답변 감사합니다.
경로가 일치하지 않는다는 정보를 제공하겠습니다. 그 이유는 한 경로는 Docker 볼륨 경로이고, 다른 경로는 실제 서버의 파일 경로이기 때문입니다.

Advanced Setup Only: Allowing SSL / HTTPS for your Discourse Docker setup

volumes:
  - volume:
      host: /var/discourse/shared/standalone
      guest: /shared

위 설정은 겉보기에는 일치하지 않는 것처럼 보이지만, 실제로는 동일한 것을 가리킵니다.
첫 번째 문제는 해결되었습니다.
제 경우의 근본 원인은 인증서 형식을 인지하지 못했던 것입니다.
설정에서는 crt 형식을 지정하고 있었지만, 저는 항상 cer 형식 파일을 사용했기 때문에 nginx가 인증서 파일을 읽는 데 실패했습니다.

:man_facepalming:
그걸 내가 전혀 못 봤네요. 정말 어이가 없네요!
알아서 고쳐주셔서 다행입니다. :+1: