Мой SSL-сертификат недействителен для www.domain.com, но работает для domain.com.
Как сделать его безопасным для www? У меня есть бесплатный SSL, который предоставляется при самостоятельной установке Discourse.
Мой SSL-сертификат недействителен для www.domain.com, но работает для domain.com.
Как сделать его безопасным для www? У меня есть бесплатный SSL, который предоставляется при самостоятельной установке Discourse.
Не получится.
Let’s Encrypt тоже бесплатный, так что ![]()
Да, я знаю, что это бесплатно, но какой метод шифрования для www?
Поскольку я настроил перенаправление на domain.com, но при переходе через www появляется сообщение «Этот сайт небезопасен».
Потому что оно создано только для Apex, или вы обращаетесь к нему неправильно в том месте, где пытаетесь его завершить.
Discourse создаёт SSL-сертификат при установке. Он выдаётся через Let’s Encrypt. Поэтому, возможно, вам стоит обратиться в ту компанию, которая сейчас предоставляет вам этот сертификат.
Я не до конца понимаю, зачем вообще это нужно.
Потому что при посещении www.mysite.com появляется сообщение вроде «Этот сайт небезопасен, вы хотите продолжить?», после чего происходит перенаправление на SSL-версию (https). Я уточню в Let’s Encrypt, есть ли какие-либо решения.
Вам также нужно создать сертификат для www.
Если вы делаете это вручную, используйте команду вроде certbot certonly --nginx -d domain.com -d www.domain.com. По сути, для каждого поддомена требуется отдельный сертификат.
Не знаю, как обстоят дела сейчас, но wildcard-сертификат (один и тот же для корневого домена и всех поддоменов) не работал особенно хорошо при создании через Lets Encrypt.
Но ещё раз: вам не о чем беспокоиться, так как Discourse делает это за вас — если только ваши настройки DNS не ошибочны или по какой-то другой причине ваш форум недоступен.
Извините, я не совсем понимаю. DNS, кажется, работает нормально, это просто перенаправление URL.
www → https://domain.com
в этой части говорится:
www.domain.com не поддерживает защищённое соединение
Вы видите это предупреждение, потому что этот сайт не поддерживает HTTPS
Но при использовании domain.com всё в порядке.
Мне стоит попробовать certbot certonly --nginx -d domain.com -d www.domain.com?
Я не знаю, что вам стоит попробовать, я даже не знаю, что вы пытаетесь сделать, как и где.
Все, что я пытаюсь сказать:
По этой теме есть обсуждение:
Спасибо.
after_ssl:
# скажите letsencrypt, какие дополнительные сертификаты нужно получить
- replace:
filename: "/etc/runit/1.d/letsencrypt"
from: /--keylength/
to: "-d site.com -d www.mysite.com --keylength"
- replace:
filename: "/etc/runit/1.d/letsencrypt"
from: /--fullchainpath/
to: "-d site.com -d www.mysite.com --fullchainpath"
Так что это должно направить www на mysite.com? Или наоборот?
Нет. Он выдает вам два сертификата: один для apex, другой для www.
Если ваше имя хоста — site.com, то всё верно. И, похоже, это так.
Обычно рекомендуется, чтобы ваш сайт находился по адресу www.site.com, а домен верхнего уровня перенаправлял на www. Я бы изменил имя хоста на www.site.com и поступил наоборот.
Мне кажется, что выдаётся один сертификат, действительный для обоих.
Здравствуйте, я поднимаю эту тему, так как думал, что исправил проблему вчера, но теперь при доступе к www.mysite.com всё ещё происходит перенаправление без SSL.
У корневой доменной зоны есть SSL, но у www — нет.
Хотя я применил это в моём файле app.yml в разделе hooks:
after_ssl:
# сообщить letsencrypt, какие дополнительные сертификаты нужно получить
- replace:
filename: "/etc/runit/1.d/letsencrypt"
from: /--keylength/
to: "-d mysite.com -d www.mysite.com --keylength"
- replace:
filename: "/etc/runit/1.d/letsencrypt"
from: /--fullchainpath/
to: "-d mysite.com -d www.mysite.com --fullchainpath"
Вы следуете инструкциям по адресу Set up Let’s Encrypt with multiple domains / redirects?
Если вы вставите www.mysite.com в шаблон в первом сообщении, это сгенерирует следующее:
after_ssl:
# укажите letsencrypt, какие дополнительные сертификаты нужно получить
- replace:
filename: "/etc/runit/1.d/letsencrypt"
from: /--keylength/
to: "-d www.mysite.com --keylength"
- replace:
filename: "/etc/runit/1.d/letsencrypt"
from: /--fullchainpath/
to: "-d www.mysite.com --fullchainpath"
global: true
Значит, вы делаете это неправильно.
А, значит, это не введено вручную.
after_ssl:
# сообщите letsencrypt, какие дополнительные сертификаты нужно получить
- replace:
filename: "/etc/runit/1.d/letsencrypt"
from: /--keylength/
to: "-d =domain2= --keylength"
- replace:
filename: "/etc/runit/1.d/letsencrypt"
from: /--fullchainpath/
to: "-d =domain2= --fullchainpath"
global: true
Так что мне нужно сделать это, заменить domain2 на mysite.com, а затем пересобрать приложение?
Привет, только что попробовал это, к сожалению, результат тот же. Вот что я сделал, но с моим доменом.
Без пробелов, правильное форматирование.
after_ssl:
# сообщить letsencrypt, какие дополнительные сертификаты нужно получить
- replace:
filename: "/etc/runit/1.d/letsencrypt"
from: /--keylength/
to: "-d =mysite.com= --keylength"
- replace:
filename: "/etc/runit/1.d/letsencrypt"
from: /--fullchainpath/
to: "-d =mysite.com= --fullchainpath"
global: true
Поскольку вы не решили эту проблему, я снял галочку с отметки «решено».
Если вы выполнили множество пересборок с другим блоком stanza, возможно, вы достигли лимита запросов.
Есть вероятность, что шаблон снова изменился, и это больше не работает, но я сомневаюсь в этом.
Решения проблемы с ограничением частоты запросов: подождать неделю или добавить третий поддомен.
Вы можете зайти внутрь контейнера и выполнить команду для запроса URL, чтобы увидеть, в чём ошибка, но я не помню, как она называется. Возможно, вы сможете увидеть ошибку, если посмотрите на
docker logs app
А, я нашёл!
Не удалось выдать сертификат для \"=mysite.com=\": Доменное имя содержит недопустимый символ
Значит, нужно убрать =, потому что они были нужны для переменной?
Вы использовали форму на другой странице, как я предлагал, и ввели имя вашего хоста в пустое поле?