Я только что обновил это, так как старая версия больше не работала. Я протестировал это на двух сайтах, так что, думаю, всё должно быть в порядке.
РЕДАКТИРОВАНИЕ: Нашел решение, игнорируйте всё ниже, но оставляю это для будущих посетителей. Решение оставлено в самом низу.
Только что наткнулся на эту ветку. Итак, мой сайт: forums.mysite.me. У меня в конфигурации NGINX три домена, и у моего провайдера доменов, для которого я использую DNS CNAME, они возвращаются как небезопасные:
mysite.me
www.mysite.me
forum.mysite.me (без "s", если кто-то ошибется в написании или угадает URL)
Должен ли я использовать базовый домен в конфигурации из оригинального поста? Или как настроить это для всех трех?
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/. Так что, мне нужно сделать два таких записи для каждого из трех указанных URL или…? Или это будет выглядеть так?
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. Очень рад.
Да. В файле есть две разные замены, которые необходимо обновить, указав имена хостов.
Разве пост в начале не дал вам это, когда вы ввели имена, как описано?
Как нам отредактировать первый пост (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, вам достаточно ввести y.com в поле “domain2” и нажать на значок копирования?
В вашем примере, если вы настроили свой Discourse для mysite.com, вам не нужна часть -d mysite.me в вашем примере (или если ваш сайт www.mysite.me, вам нужна только часть -d mysite.me).
В какой файл добавляется этот код, пожалуйста?
Код следует добавить в конец вашего файла app.yml, в раздел hooks:
18 сообщений были перенесены в новую тему: Let’s Encrypt с несколькими доменами не работал для ECC-сертификатов
Мне всё ещё нужны две другие замены фрагментов кода или достаточно только этого нового фрагмента?
Я добавил его и перекомпилировал, но при переходе на один из доменов https, который я хочу перенаправить, всё ещё получаю ошибку конфиденциальности SSL.
При проверке сертификата его общее имя — forum.domain.com, поля O и OU в сертификат не включены.
Я пытаюсь настроить перенаправление https://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
Должны быть кавычки, а не слеши. Я отредактировал ваш пост и пост автора темы. То, что у вас сейчас, должно работать.