기존 버전이 더 이상 작동하지 않아서 방금 업데이트했습니다. 두 사이트에서 테스트해 봤으니 이제 괜찮을 거라고 생각합니다.
수정: 해결 방법을 찾았습니다. 아래 내용은 무시하셔도 되지만, 향후를 위해 남겨둡니다. 해결 방법은 맨 아래에 있습니다.
이 스레드를 우연히 발견했습니다. 제 사이트는 forums.mysite.me입니다. NGINX 설정과 DNS CNAME을 사용하는 도메인 제공업체에서 3개의 도메인을 사용 중인데, 모두 '보안 없음’으로 표시되고 있습니다:
mysite.me
www.mysite.me
forum.mysite.me (누군가 URL을 잘못 입력하거나 추측했을 때를 대비하여 "s"가 없는 경우)
원본 게시물에 있는 설정에서 기본 도메인을 사용해야 하나요? 아니면 이 3개 모두에 대해 어떻게 설정해야 하나요?
after_ssl:
# letsencrypt에 추가적으로 발급받을 인증서를 알려줍니다
- replace:
filename: "/etc/runit/1.d/letsencrypt"
from: /--keylength/
to: "-d forums.mysite.me --keylength"
- replace:
filename: "/etc/runit/1.d/letsencrypt"
from: /--fullchainpath/
to: "-d forums.mysite.me --fullchainpath"
첫 번째 “replace” 섹션에는 from: /--keylength/가 있고, 그 아래 섹션에는 from: /--fullchainpath/가 있습니다. 그래서 제가 나열한 3개의 URL 각각에 대해 이와 같이 2개의 항목을 만들어야 하는 건가요? …아니면 이렇게 해야 하나요?
after_ssl:
# letsencrypt에 추가적으로 발급받을 인증서를 알려줍니다
- replace:
filename: "/etc/runit/1.d/letsencrypt"
from: /--keylength/
to: "-d mysite.me -d www.mysite.me -d forum.mysite.me --keylength"
- replace:
filename: "/etc/runit/1.d/letsencrypt"
from: /--fullchainpath/
to: "-d mysite.me -d www.mysite.me -d forum.mysite.me --fullchainpath"
^ 네, 바로 위 박스가 여러 사이트/LetsEncrypt에 대한 해결책이었습니다. 정말 기쁩니다.
네. 파일에는 호스트네임으로 업데이트해야 하는 두 가지 다른 치환(replacement)이 있습니다.
상단의 게시글에서 설명대로 이름을 입력했을 때 주신 내용이 바로 그 것이 아닌가요?
OP(원문 게시글)를 어떻게 수정해야 혼란스럽지 않을 수 있을까요?
개인적으로는 입력 상자를 위에 배치해서 타이핑하면서 바로 볼 수 있게 하는 게 좋다고 생각합니다.
게시글에 그렇게 나와 있긴 했는데, 이해가 안 됐어요.
제가 인용한 "여러 도메인을 추가해야 하는 경우
좋습니다. 이렇게 하면 어떨까요:
복사할 코드 이후에 다음과 같이 이어집니다:
이해가 되시나요?
위에서 사용한 예제처럼 여러 사이트가 포함된 실제 코드를 넣는 것이 가장 쉽다고 생각합니다:
after_ssl:
# letsencrypt에서 추가적으로 발급받을 인증서를 지정
- replace:
filename: "/etc/runit/1.d/letsencrypt"
from: /--keylength/
to: "-d mysite.me -d www.mysite.me --keylength"
- replace:
filename: "/etc/runit/1.d/letsencrypt"
from: /--fullchainpath/
to: "-d mysite.me -d www.mysite.me --fullchainpath"
대부분의 사용자는 추가 도메인을 하나만 추가할 것이므로, 제 방식이 더 쉽고 텍스트를 수정할 필요 없이 필요한 정확한 텍스트를 얻을 수 있는 간단한 방법을 제공합니다.
사이트가 discourse.y.com이고 discourse.y.com과 y.com에 대한 인증서가 필요한 경우, “domain2” 필드에 y.com만 입력하고 복사 아이콘을 클릭하면 된다는 점은 여전히 명확한가요?
예시에서 Discourse를 mysite.com으로 구성한 경우, 예시에 있는 -d mysite.me 부분이 필요하지 않습니다(또는 사이트가 www.mysite.me인 경우 -d mysite.me 부분만 필요합니다).
이 코드는 어떤 파일에 추가되는 건가요?
다음 코드는 app.yml 파일의 끝부분 근처, hooks 섹션에 추가해야 합니다:
18개의 게시글이 새 주제로 분리되었습니다: Let’s Encrypte with multiple domains wasn’t working for ECC certs
다른 두 코드 스니펫 대체도 여전히 필요한가요, 아니면 이 새로운 코드 스니펫만 있으면 충분한가요?
추가하고 다시 컴파일했지만, 리디렉션하려는 https 도메인 중 하나에 접속할 때 여전히 SSL 프라이버시 오류가 발생합니다.
인증서를 살펴보니 공통 이름(common name)이 forum.domain.com으로 되어 있으며, O와 OU는 인증서에 포함되어 있지 않습니다.
http://domain.com과 https://www.domain.com을 https://forum.domain.com으로 리디렉션하려고 시도하고 있습니다.
http://domain.com과 http://www.domain.com을 사용하면 https://forum.domain.com으로 올바르게 리디렉션됩니다.
무엇을 삽입하셨나요? after_ssl 스텐스가 어떻게 생겼나요?
이렇게 보입니다. (실제 도메인 이름을 변경했습니다)
after_ssl:
- replace:
filename: /etc/runit/1.d/letsencrypt
from: /-d forum.mydomain.com /
to: -d forum.mydomain.com -d www.mydomain.com -d mydomain.com
global: true
또한 이것도 추가했습니다
LETSENCRYPT_ALTERNATE_NAMES: mydomain.com,www.mydomain.com
브라우저 오류는 다음과 같습니다.
net::ERR_CERT_COMMON_NAME_INVALID
이름들이 모두 해결됩니까? 앞에 Cloudflare가 없나요? 레이트 리밋에 도달한 적이 있나요? 컨테이너 안에서 /etc/runit/1.d/letsencrypt를 실행해 보고 무슨 일이 일어나는지 확인할 수 있습니다.
모든 이름이 해석되고, Cloudflare를 사용하지 않으며, 히트레이트는 정상이어야 합니다.
다음은 letsencrypt를 실행한 결과입니다.
(도메인 이름은 대체되었습니다)
/var/www/discourse# /etc/runit/1.d/letsencrypt
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] still could not bind()
[Tue Apr 29 04:02:13 PM UTC 2025] Unknown parameter : 4096
[Tue Apr 29 04:02:13 PM UTC 2025] Installing key to: /shared/ssl/forum.domain.com.key
[Tue Apr 29 04:02:13 PM UTC 2025] Installing full chain to: /shared/ssl/forum.domain.com.cer
[Tue Apr 29 04:02:13 PM UTC 2025] Run reload cmd: sv reload nginx
ok: run: nginx: (pid 429) 10662s
[Tue Apr 29 04:02:13 PM UTC 2025] Reload success
[Tue Apr 29 04:02:13 PM UTC 2025] Unknown parameter : ec-256
[Tue Apr 29 04:02:14 PM UTC 2025] Installing key to: /shared/ssl/forum.domain.com_ecc.key
[Tue Apr 29 04:02:14 PM UTC 2025] Installing full chain to: /shared/ssl/forum.domain.com_ecc.cer
[Tue Apr 29 04:02:14 PM UTC 2025] Run reload cmd: sv reload nginx
ok: run: nginx: (pid 429) 10663s
[Tue Apr 29 04:02:14 PM UTC 2025] Reload success
파일 안을 살펴봤는데, 재미있는 부분이 있네요
issue_cert() {
LE_WORKING_DIR="${LETSENCRYPT_DIR}" /shared/letsencrypt/acme.sh --issue $2 -d forum.domain.com -d www.domain.com -d domain.com--keylength $1 -w /var/www/discourse/public
}
마지막 도메인과 --keylength 사이에 공백이 하나 빠진 것 같은데요?
domain.com--keylength
그 부분을 수정하니 문제가 해결되었습니다. 도움 주셔서 감사합니다.
수정 사항에 to: 필드에도 /를 추가해야 하는 것으로 이해하면 되나요?
after_ssl:
- replace:
filename: /etc/runit/1.d/letsencrypt
from: /-d forum.domain.com /
to: "-d forum.domain.com -d www.domain.com "
global: true
슬래시가 아니라 따옴표여야 합니다. 게시글과 원글(OP)을 수정해 두었습니다. 현재 상태라면 정상 작동할 것입니다.