# Set up Let’s Encrypt with multiple domains / redirects

**URL:** https://meta.discourse.org/t/set-up-let-s-encrypt-with-multiple-domains-redirects/56685
**Category:** Sysadmins
**Tags:** how-to, letsencrypt
**Created:** [2월 1, 2017, 2:21오전 UTC](https://meta.discourse.org/t/set-up-let-s-encrypt-with-multiple-domains-redirects/56685 "2017-02-01T02:21:03Z")
**Posts on this page:** 20
**Page:** 4

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [3월 26, 2024, 6:48오후 UTC](https://meta.discourse.org/t/set-up-let-s-encrypt-with-multiple-domains-redirects/56685/135 "2024-03-26T18:48:52Z")

</div>

기존 버전이 더 이상 작동하지 않아서 방금 업데이트했습니다. 두 사이트에서 테스트해 봤으니 이제 괜찮을 거라고 생각합니다.

---

<div class="post-metadata">

### Author: ![45thj5ej](https://avatars.discourse-cdn.com/v4/letter/4/34f0e0/32.png) [@45thj5ej](https://meta.discourse.org/u/45thj5ej)
#### Post date: [4월 2, 2024, 6:09오후 UTC](https://meta.discourse.org/t/set-up-let-s-encrypt-with-multiple-domains-redirects/56685/136 "2024-04-02T18:09:57Z")

</div>

**수정: 해결 방법을 찾았습니다. 아래 내용은 무시하셔도 되지만, 향후를 위해 남겨둡니다. 해결 방법은 맨 아래에 있습니다.**

이 스레드를 우연히 발견했습니다. 제 사이트는 `forums.mysite.me`입니다. NGINX 설정과 DNS CNAME을 사용하는 도메인 제공업체에서 3개의 도메인을 사용 중인데, 모두 '보안 없음’으로 표시되고 있습니다:

```plaintext
mysite.me
www.mysite.me
forum.mysite.me (누군가 URL을 잘못 입력하거나 추측했을 때를 대비하여 "s"가 없는 경우)

```

원본 게시물에 있는 설정에서 기본 도메인을 사용해야 하나요? 아니면 이 3개 모두에 대해 어떻게 설정해야 하나요?

```plaintext
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개의 항목을 만들어야 하는 건가요? …아니면 이렇게 해야 하나요?

```plaintext
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에 대한 해결책이었습니다. 정말 기쁩니다.

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [4월 2, 2024, 8:49오후 UTC](https://meta.discourse.org/t/set-up-let-s-encrypt-with-multiple-domains-redirects/56685/137 "2024-04-02T20:49:24Z")

</div>

> [@45thj5ej](#):
>
> 첫 번째 “replace” 섹션에는 `from: /--keylength/`가 있고, 그 아래 섹션에는 `from: /--fullchainpath/`가 있어서 혼란스럽습니다. 그래서 제가 나열한 3개의 URL 각각에 대해 그렇게 2개의 항목을 만들어야 하는 건가요? 아니면 이렇게 해야 하는 건가요?

네. 파일에는 호스트네임으로 업데이트해야 하는 두 가지 다른 치환(replacement)이 있습니다.

상단의 게시글에서 설명대로 이름을 입력했을 때 주신 내용이 바로 그 것이 아닌가요?

> [@brahn](#):
>
> 여러 개의 추가 도메인을 추가해야 하는 경우, `domain2` 필드에 `www.bananas.com -d forum.bananas.com`과 같은 내용을 입력할 수 있습니다.

OP(원문 게시글)를 어떻게 수정해야 혼란스럽지 않을 수 있을까요?

---

<div class="post-metadata">

### Author: ![Firepup650](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/firepup650/32/465200_2.png) [@Firepup650](https://meta.discourse.org/u/Firepup650)
#### Post date: [4월 2, 2024, 9:06오후 UTC](https://meta.discourse.org/t/set-up-let-s-encrypt-with-multiple-domains-redirects/56685/138 "2024-04-02T21:06:33Z")

</div>

개인적으로는 입력 상자를 위에 배치해서 타이핑하면서 바로 볼 수 있게 하는 게 좋다고 생각합니다.

---

<div class="post-metadata">

### Author: ![45thj5ej](https://avatars.discourse-cdn.com/v4/letter/4/34f0e0/32.png) [@45thj5ej](https://meta.discourse.org/u/45thj5ej)
#### Post date: [4월 2, 2024, 9:36오후 UTC](https://meta.discourse.org/t/set-up-let-s-encrypt-with-multiple-domains-redirects/56685/139 "2024-04-02T21:36:52Z")

</div>

게시글에 그렇게 나와 있긴 했는데, 이해가 안 됐어요.

> [@45thj5ej](#):
>
> 첫 번째 “replace” 섹션에는 from: `/--keylength/`가 있고, 그 아래 섹션에는 from: /–fullchainpath/가 있습니다. 그러면 제가 나열한 3개의 URL 각각에 대해 그런 항목을 2개씩 만들어야 하는 건가요? 아니면 이렇게 해야 하나요?

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [4월 2, 2024, 10:11오후 UTC](https://meta.discourse.org/t/set-up-let-s-encrypt-with-multiple-domains-redirects/56685/140 "2024-04-02T22:11:35Z")

</div>

제가 인용한 "여러 도메인을 추가해야 하는 경우

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [4월 3, 2024, 3:55오후 UTC](https://meta.discourse.org/t/set-up-let-s-encrypt-with-multiple-domains-redirects/56685/141 "2024-04-03T15:55:56Z")

</div>

좋습니다. 이렇게 하면 어떨까요:

> [@brahn](#):
>
> 교체해야 할 패턴이 두 가지 있습니다. 하나는 `--keylength`로 끝나고, 다른 하나는 `--fullchainpath`로 끝납니다(실제 파일에서는 각 옵션 앞에 원래 도메인이 위치합니다). (서브)도메인(그리고 `-d `로 시작하는 추가 서브도메인)을 입력한 후, 파일 하단의 `app.yml` 훅(hooks) 섹션에 다음 내용을 추가하세요:

복사할 코드 이후에 다음과 같이 이어집니다:

> [@brahn](#):
>
> 이렇게 하면 인증서 문제 없이 두 번째 도메인에 대해 HTTPS를 설정하고, 올바른 도메인으로 리디렉션되도록 할 수 있습니다.
> 
> 여러 개의 추가 도메인을 추가해야 하는 경우, `domain2` 필드에 다음과 같은 내용을 입력할 수 있습니다: `www.bananas.com -d forum.bananas.com`

이해가 되시나요?

---

<div class="post-metadata">

### Author: ![45thj5ej](https://avatars.discourse-cdn.com/v4/letter/4/34f0e0/32.png) [@45thj5ej](https://meta.discourse.org/u/45thj5ej)
#### Post date: [4월 3, 2024, 5:39오후 UTC](https://meta.discourse.org/t/set-up-let-s-encrypt-with-multiple-domains-redirects/56685/142 "2024-04-03T17:39:08Z")

</div>

위에서 사용한 예제처럼 여러 사이트가 포함된 실제 코드를 넣는 것이 가장 쉽다고 생각합니다:

```plaintext
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"

```

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [4월 3, 2024, 6:05오후 UTC](https://meta.discourse.org/t/set-up-let-s-encrypt-with-multiple-domains-redirects/56685/143 "2024-04-03T18:05:30Z")

</div>

대부분의 사용자는 추가 도메인을 하나만 추가할 것이므로, 제 방식이 더 쉽고 텍스트를 수정할 필요 없이 필요한 정확한 텍스트를 얻을 수 있는 간단한 방법을 제공합니다.

사이트가 `discourse.y.com`이고 `discourse.y.com`과 `y.com`에 대한 인증서가 필요한 경우, “domain2” 필드에 `y.com`만 입력하고 복사 아이콘을 클릭하면 된다는 점은 여전히 명확한가요?

예시에서 Discourse를 mysite.com으로 구성한 경우, 예시에 있는 `-d mysite.me` 부분이 필요하지 않습니다(또는 사이트가 `www.mysite.me`인 경우 `-d mysite.me` 부분만 필요합니다).

---

<div class="post-metadata">

### Author: ![microhit](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/microhit/32/447960_2.png) [@microhit](https://meta.discourse.org/u/microhit)
#### Post date: [4월 6, 2024, 8:07오후 UTC](https://meta.discourse.org/t/set-up-let-s-encrypt-with-multiple-domains-redirects/56685/144 "2024-04-06T20:07:03Z")

</div>

이 코드는 어떤 파일에 추가되는 건가요?

---

<div class="post-metadata">

### Author: ![Firepup650](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/firepup650/32/465200_2.png) [@Firepup650](https://meta.discourse.org/u/Firepup650)
#### Post date: [4월 6, 2024, 10:54오후 UTC](https://meta.discourse.org/t/set-up-let-s-encrypt-with-multiple-domains-redirects/56685/145 "2024-04-06T22:54:44Z")

</div>

다음 코드는 `app.yml` 파일의 끝부분 근처, `hooks` 섹션에 추가해야 합니다:

> [@brahn](#):
>
> `app.yml`의 `hooks` 섹션(파일 끝부분 근처)에 다음 내용을 추가하세요

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [9월 25, 2024, 6:16오후 UTC](https://meta.discourse.org/t/set-up-let-s-encrypt-with-multiple-domains-redirects/56685/146 "2024-09-25T18:16:19Z")

</div>

18개의 게시글이 새 주제로 분리되었습니다: [Let’s Encrypte with multiple domains wasn’t working for ECC certs](https://meta.discourse.org/t/lets-encrypte-with-multiple-domains-wasnt-working-for-ecc-certs/328109)

---

<div class="post-metadata">

### Author: ![bar10dr](https://avatars.discourse-cdn.com/v4/letter/b/b38774/32.png) [@bar10dr](https://meta.discourse.org/u/bar10dr)
#### Post date: [4월 29, 2025, 11:10오전 UTC](https://meta.discourse.org/t/set-up-let-s-encrypt-with-multiple-domains-redirects/56685/148 "2025-04-29T11:10:10Z")

</div>

다른 두 코드 스니펫 대체도 여전히 필요한가요, 아니면 이 새로운 코드 스니펫만 있으면 충분한가요?

추가하고 다시 컴파일했지만, 리디렉션하려는 https 도메인 중 하나에 접속할 때 여전히 SSL 프라이버시 오류가 발생합니다.

인증서를 살펴보니 공통 이름(common name)이 forum.domain.com으로 되어 있으며, O와 OU는 인증서에 포함되어 있지 않습니다.

[http://domain.com과](http://domain.xn--com-rg8l) [https://www.domain.com을](https://www.domain.xn--com-of0o) [https://forum.domain.com으로](https://forum.domain.xn--com-ky7m580d) 리디렉션하려고 시도하고 있습니다.

[http://domain.com과](http://domain.xn--com-rg8l) [http://www.domain.com을](http://www.domain.xn--com-of0o) 사용하면 [https://forum.domain.com으로](https://forum.domain.xn--com-ky7m580d) 올바르게 리디렉션됩니다.

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [4월 29, 2025, 3:14오후 UTC](https://meta.discourse.org/t/set-up-let-s-encrypt-with-multiple-domains-redirects/56685/149 "2025-04-29T15:14:19Z")

</div>

무엇을 삽입하셨나요? after\_ssl 스텐스가 어떻게 생겼나요?

---

<div class="post-metadata">

### Author: ![bar10dr](https://avatars.discourse-cdn.com/v4/letter/b/b38774/32.png) [@bar10dr](https://meta.discourse.org/u/bar10dr)
#### Post date: [4월 29, 2025, 3:27오후 UTC](https://meta.discourse.org/t/set-up-let-s-encrypt-with-multiple-domains-redirects/56685/150 "2025-04-29T15:27:33Z")

</div>

이렇게 보입니다. (실제 도메인 이름을 변경했습니다)

```plaintext
  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

```

또한 이것도 추가했습니다

```plaintext
LETSENCRYPT_ALTERNATE_NAMES: mydomain.com,www.mydomain.com

```

브라우저 오류는 다음과 같습니다.

net::ERR\_CERT\_COMMON\_NAME\_INVALID

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [4월 29, 2025, 3:45오후 UTC](https://meta.discourse.org/t/set-up-let-s-encrypt-with-multiple-domains-redirects/56685/151 "2025-04-29T15:45:05Z")

</div>

이름들이 모두 해결됩니까? 앞에 Cloudflare가 없나요? 레이트 리밋에 도달한 적이 있나요? 컨테이너 안에서 `/etc/runit/1.d/letsencrypt`를 실행해 보고 무슨 일이 일어나는지 확인할 수 있습니다.

---

<div class="post-metadata">

### Author: ![bar10dr](https://avatars.discourse-cdn.com/v4/letter/b/b38774/32.png) [@bar10dr](https://meta.discourse.org/u/bar10dr)
#### Post date: [4월 29, 2025, 4:04오후 UTC](https://meta.discourse.org/t/set-up-let-s-encrypt-with-multiple-domains-redirects/56685/152 "2025-04-29T16:04:57Z")

</div>

모든 이름이 해석되고, Cloudflare를 사용하지 않으며, 히트레이트는 정상이어야 합니다.

다음은 letsencrypt를 실행한 결과입니다.

(도메인 이름은 대체되었습니다)

```plaintext
/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

```

---

<div class="post-metadata">

### Author: ![bar10dr](https://avatars.discourse-cdn.com/v4/letter/b/b38774/32.png) [@bar10dr](https://meta.discourse.org/u/bar10dr)
#### Post date: [4월 29, 2025, 4:09오후 UTC](https://meta.discourse.org/t/set-up-let-s-encrypt-with-multiple-domains-redirects/56685/153 "2025-04-29T16:09:23Z")

</div>

파일 안을 살펴봤는데, 재미있는 부분이 있네요

```plaintext
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 사이에 공백이 하나 빠진 것 같은데요?

```plaintext
domain.com--keylength

```

---

<div class="post-metadata">

### Author: ![bar10dr](https://avatars.discourse-cdn.com/v4/letter/b/b38774/32.png) [@bar10dr](https://meta.discourse.org/u/bar10dr)
#### Post date: [4월 29, 2025, 4:13오후 UTC](https://meta.discourse.org/t/set-up-let-s-encrypt-with-multiple-domains-redirects/56685/154 "2025-04-29T16:13:34Z")

</div>

그 부분을 수정하니 문제가 해결되었습니다. 도움 주셔서 감사합니다.

수정 사항에 `to:` 필드에도 `/`를 추가해야 하는 것으로 이해하면 되나요?

```plaintext
  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

```

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [4월 29, 2025, 4:50오후 UTC](https://meta.discourse.org/t/set-up-let-s-encrypt-with-multiple-domains-redirects/56685/155 "2025-04-29T16:50:33Z")

</div>

슬래시가 아니라 따옴표여야 합니다. 게시글과 원글(OP)을 수정해 두었습니다. 현재 상태라면 정상 작동할 것입니다.

[이전 페이지](https://meta.discourse.org/t/set-up-let-s-encrypt-with-multiple-domains-redirects/56685.md?page=3)

[다음 페이지](https://meta.discourse.org/t/set-up-let-s-encrypt-with-multiple-domains-redirects/56685.md?page=5)
