Pull to refresh

Comments 92

LetsEncrypt сертификаты можно выпускать и с верификацией по DNS. Из клиентов например https://github.com/acmesh-official/acme.sh умеет автоматически работать с огромным количеством DNS сервисов и выпускать wildcard сертификаты (т.е. основной домен и все поддомены уровня выше). Возможно даже заведется на windows, но проще гарантированно завести на windows subsystem linux.
Чуть правильнее было бы задать соотвествующий вопрос в Q&A, чем писать очевидный мануал на профильном портале :)

Поддерживаю, гораздо полезнее обсуждать нормальные сертификаты и желательно длительные.

Много плюсов к упоминанию acme.sh.

умеет автоматически работать с огромным количеством DNS сервисов и выпускать wildcard сертификаты

А если воспользоваться ручным режимом, то можно утверждать, что умеет работать с любым DNS сервисом, который доступен миру. (wildcard в ручном режиме доступен)
https://github.com/acmesh-official/acme.sh/wiki/DNS-manual-mode

Использую acme.sh и есть проблема с подтверждением через yandex-dns. В настройках ожидание 600 секунд, в dns записи появляются, а LetsEncrypt срабатывает с десятого раза и обычно только ночью.

У Яндекса невероятно долго обновляются DNS-записи. Могут часами не отдавать новые значения — какие уж там 600 секунд...

Я искал информацию о ручном выпуске сертификата на Хабре (очень люблю этот портал), но не нашёл, поэтому написал сам, для таких же неспециалистов в веб-технологиях как и я сам. Спасибо за ссылку!

Если вам нужен SSL-сертификат, но вы не являетесь специалистом в веб-технологиях

то с грехом пополам вы его выпустите по этой или другой подобной инструкции, а потом все равно не сможете правильно вкорячить на свой сайт ;)

Уже несколько обновляю сертификаты на своих небольших личных проектах. Устанавливаю через обычный визуальный интерфейс хостинга. Никакой автоматизации в этом отношении нет. Пока до этого руки не дошли. Не всё сразу :)

Так я не про Вас лично ;) Я просто сомневаюсь, что запрос сертификата "вручную" - наибольшая проблема в процессе ручной установки.

Что делать когда выбивается такая ошибка?

Не подскажите в чем проблема была?

Судя по тексту ошибки проблема была в том, что проверочные файлы не были созданы или были помещены не туда, куда просит поместить их программа.

А если продлевать время пришло, то опять надо все шаги делать? или можно пропустить шаги создания файла верификации (он же уже на сайте есть). Вы как делаете?
По логике для продления достаточно только последний шаг - создать новые файлы сертификатов.

Я делаю всё заново, начиная со второго шага (Открыть PowerShell (х86) с правами администратора). Вы можете попробовать, конечно же, упростить процедуру. Напишите о результатах эксперимента, будет любопытно узнать.

А зачем вообще на локальном компе это делать, если есть доступ к серверу?

Тоже задумался надл этим вопросом. Где сертификат используется - там и генерируется. Тем более у certbot есть встроенный механизм автообновления.

Потому, что существуют виртуальные хостинги. Это когда всё настроено хостинг-провайдером, а пользователь только файлики в папочки по sftp заливает. Запустить что-то на таком "сервере" не получится, а вот загрузить сертификаты через web-приложение провайдера можно. Как я понял, у ТС именно такая ситуация.

Да, у меня виртуальный хостинг на nic.ru.

Чтобы мне было понятно что делаю. Встречаемые мною инструкции по установке Certbot на сервер для меня пока что сложны (всё-таки у меня совсем другой профессиональный профиль). В различных видео-мануалах авторы зачастую забывают указать даже название открытой перед ними программы, в которую они вводят команды. Думают, что всё очевидно, наверное... Много потерянного времени. Мне сейчас проще так выпустить себе сертификаты.

Почему я не пишу статьи на Хабр? Потому что следую совета умного человека - забей тему потенциальной статьи в гугл и посмотри на результат, если имеется хотя бы 3 линка на идентичный материал - писать не стоит, ибо это уже с 99% вероятностью есть на Хабре.

-Это уже было в Симпсонах(с)

Я на Хабре не нашёл. Поэтому и написал, чтобы помочь таким же нуждающимся как я :)

А я поддержу автора, хоть материал и во многом вторичен, чувствуется, что человек постарался, как минимум тщательно оформил текст. Может кому этот материал в итоге пригодится.

плюсик за оформление статьи и минусик за тему

>> генерировать сертификат на десктопе с виндой при том что он нужен на сервере с линуксом
>> генерировать сертификат НЕ через DNS подтверждение
>> не сделать авторотейт сертификатов

похоже на выстрел в ногу. если взять не certbot а какой нибудь lego например то он с огромной кучей DNS провайдеров по api умеет работать. закинуть в крон и не париться о сертификате долгие годы.

upd:

генерировать сертификат НЕ через DNS подтверждение

написал не так как было в голове и теперь не могу отредактировать, но думаю и так понятно что я имел ввиду

Спасибо за плюсик :). Это приятно.
Заметка для неспециалистов, это однозначно сформулировано в начале. Мне бы она точно помогла сэкономить время, поэтому я её и написал. Про авторотейт я пока даже не слышал.
Никто не рождается со знанием в голове. Все его добывают. На это требуется время.
Если человек не знает как выпустить SSL-сертификат, но ему срочно нужно, то мануал ему поможет. Как помог бы мне. Я рад этому.
Спасибо за минус, буду знать за что :)

Есть разные кейсы. Если Shared hosting не поддерживает letsencrypt сам из коробки, установить туда certbot будет проблематично. Все, что вы можете - заливать файлы по FTP/через веб морду.

Касательно DNS - во-первых, все равно нужно установить/запустить в докере... Во-вторых, спасибо за ссылку на lego, не знал про него. К сожалению, несмотря на значительное количество поддерживаемых DNS провайдеров, воспользоваться сможет далеко не каждый:

Нормальная статья для новичков, которым надо, чтобы быстренько заработало. А оптимизируют потом, по мере появления опыта.

Не соглашусь про шаред хостинги, обычно у них le работает вообще по галочке в настройках вихоста

А причём тут лохер я вообще не понял

Ключевое слово "обычно". В свое время, когда я выбирал дешевый хостинг, для меня было экстазом наличие такой фичи у выбранного дешевого хостера. Обычно просили денег. У "больших" может и норма, но здесь речь именно про совсем новичков.

Что такое "лохер" теперь уже я не понял :)

Впрочем, это неважно. Я лишь хотел сказать, что для таких статей место вполне есть. Сейчас я могу надувать щеки и рассказывать, как собрал на внешнем сервере контейнер с Nginx reverse proxy для доступа к домашним ресурсам, спрятанным за двойным Hide NAT с автоматическим обнаружением новых контейнеров, генерации для них конфигов и обновлением сертификатов. Но много лет назад мне бы такая инструкция весьма пригодилось бы.

Если у вас виртуальный или физический сервер, то автоматическое продление сертификатов обычно идет из коробки.
Для такого случая здесь инструкции для различных серверов:
https://certbot.eff.org/instructions
В форме необходимо выбрать тип веб сервера и свою ОС, и вы получите пошаговую инструкцию по настройке certbot для получения сертификатов letsencrypt.

Если у вас виртуальный хостинг, то вот здесь есть инструкции для различных хостинг провайдеров, правда российских там не обнаружил:
https://certbot.eff.org/hosting_providers/

К сожалению на моём хостинге нет автовыпуска и тем более автопродления SSL-сертификатов (даже базовых). Хостер хочет более 5 тыс. руб. за сертификат :).
Не спрашивайте какой хостер, я всё равно пока менять не собираюсь :).

Спасибо за ссылки! Я там был, но инструкции для меня оказались сложны (много пробелов пока что).

В свете всяких пакостей в опенсорс проектах — "скачайте не ведомую зверушку и выпустите с её помощью сертификат". В скриптах хоть посмотреть можно что должно происходить...

Что скачивать и ставить каждый решает сам. А в скриптах смотреть ещё умение требуется. Заметка написана для неспециалистов.

А ничего, что certbot это и так скрипт, который написан на питоне?

Кстати, вы этот комментарий написали тоже через скрипт?

Мне по заголовку казалось, что здесь будет что-то более нетривиальное, какой-нибудь альтернативный бесплатный провайдер хотя бы… А всё опять про let's encrypt.

У меня есть содержательный вопрос, для которого let's encrypt, к сожалению, не подходит. Допустим, я для своего pet project с одной стороны не хочу морочиться с DNS (слишком уж он pet), а с другой — не хочу, чтобы у пользователей браузер орал «соединение небезопасно!!!1111одинодин». Как получить сертификат на «голый» IP-адрес? Платники (вот уж кто всем торговцам воздухом торговец воздухом, по сравнению даже со сторонниками копирайта) такое позволяют, let's encrypt сопротивляется.

Спасибо за интерес к теме! К сожалению я не специалист в этом вопросе. Просто поделился способом, который сам искал. Может быть кто-то из знатоков сможет рассказать как получить сертификат на «голый» IP-адрес. Или поделится адресом бесплатного альтернативного провайдера.

https://zerossl.com/pricing/
Они умеют выпускать сертификаты на голый ip через http верификацию. Через тот acme.sh клиент, но нужно немного запариться и законфигурировать туда свою учетку от zerossl.

Вы проверяли, что там реально можно получить сертификат на голый ip через acme? Если да, то насколько давно?

Когда я проверяла, мне через acme чётко отвечали (было видно в логах), что для голого ip получить сертификат через acme невозможно.

Кроме того, там сейчас без всяких комментариев написано, что бесплатно можно получить только 3 сертификата. Во время моей проверки там был комментарий, что 3 сертификата можно получить через web-интерфейс, а через acme — неограниченно, но сейчас я такого комментария не вижу. Это создаёт впечатление, что они становятся менее дружественны к пользователю, а не более, и заставляет сомневаться, что раньше ip были запрещены, а теперь их разрешили.

IP сертификаты никто не запрещал никогда. Просто мало кто реализовывал и далеко не сразу. По поводу условий сервиса - не вижу проблем, если вам нужно до трёх сертификатов. Если больше, то он не очень дорогой. https://help.zerossl.com/hc/en-us/articles/360060119973-Is-It-Possible-To-Generate-a-SSL-Certificate-for-an-IP-Address-

А почему сразу минус? Под «запрещены» я имею в виду «запрещены правилами и условиями конкретного сервиса», а не «вообще запрещены стандартами» — мне казалось, это ясно из контекста в моём комментарии.

А про «правила и условия zerossl» — это именно то, что писал их сервер в ответ на мои acme-запросы (это было видно по логам acme).

sslip.io не поможет?

Выпустите сертификат на https://52-0-56-137.sslip.io, и он будет разрезолвится в 52.0.56.137

Это выглядит как хоть какое-то решение, хотя и кривоватое, спасибо.

Добавлю для тех, кто, прочитав эту ветку, захочет использовать этот метод для каких-то серьёзных задач: этот метод требует доверия админам sslip.io. Если мы им не доверяем, то (технически точно, да и юридически для меня вопрос не очень очевидный) им ничего не мешает получить сертификат на ваш_ip.sslip.io или на *.sslip.io, резолвить ваш_ip.sslip.io в реальный ip-адрес, принадлежащий им самим и MITM-ить ваш траффик.

Люди, вы чего такие злые? На фоне массы статей "боремся с дидосом с помощью скриптов на php", это вполне годная статья, да еще и оформленная толково.

Есть вот такой неплохой способ.

И в принципе это полуавтоматический или даже автоматический способ для получения SSL для всех своих проектов. IMHO это более удобно, чем ваш способ.

https://github.com/win-acme/win-acme

Большое спасибо за ссылку! Обязательно прочитаю об этом способе!

Зашел в комменты увидеть ссылку на этот софт. ) Лучшая софтина для SSL под Винду.

  • Интуитивно понятный интерфейс, даже не нужно разбираться в технологиях.

  • Софтина сама подвяжет серт на нужный сайт в IIS.

  • И автопродление. Поставил и забыл.

не хотите заниматься выпуском и ротацией самостоятельно?

не хотите / не умеете / нет времени автоматизировать всё это?

посмотрите на готовые встроенные опции работы с let's encrypt у хостера или у вашего web / reverse proxy / api gateway сервера

например traefic / kong / openresty (nginx + lua) уже умеют это сами или с плагином

Согласен, у меня та же ситуация. Особенно когда при санкциях нужно от 1-2 дней что бы выпустить сертификат (по крайней мере так у моего хостера). А благодаря этой статье можно получить SSL за 5 минут и пользоваться. Сейчас ищу только как сделать авто продление )

Сохранил спасибо! только вчера хотел установить бесплатный SSL на свой сайт btat.ru Сегодня думаю получится самому сделать

если просто запускать certbot.exe выдает ошибку

как я понял, для запуска требуется python, ладно установил python 3.8, но ошибка не ушла

потом установил обновление kb2999226 чтобы добавить эту библиотеку, но все равно такая ошибка

пошел по другому пути, зашел на свой сервер через rdp, запустил, вроде все идет, но не понял этот пункт:

Нажал клавишу Enter для создания сертификата, но только после того, как проверочные файлы на веб-сервере были созданы.

какие проверочные файлы надо создавать? и куда их ложить?

Смотри, давай помогу.

Когда у тебя появляется такая запись то ты должен создать на сервере директиву example.com/.well-know/acme-challenge/

И потом создаешь ФАЙЛ(не папку) указанную выше и в ней же ты должен написать вот это

Да, совершенно верно!

"Проверочные файлы" - это простые текстовые файлы без расширения, с указанным в окне PowerShell именем и с указанным содержимым (их Вам подчеркнули красным выше), которые должны оказаться по указанному там же (в окне PowerShell) адресу.

Вы можете создать такие файлы через обычный Блокнот (если файл сохранится с расширением, например .txt, то просто удалите это расширение оставив только имя файла). Затем созданный файл нужно поместить на свой веб-сервер в ту папку, которую показывает Вам PowerShell. Только после этого можно нажать Enter на клавиатуре. То есть нужно делать всё последовательно по инструкции: программа попросила Вас создать файл - создайте и положите его на сервер, потом нажмите Enter. Если Вы ввели два доменных имени (например, второе с www), то программа попросит создать ещё один проверочный файл. Создайте второй и только после этого нажмите Enter.

Эти файлы называются проверочными потому, что Certbot проверяет их наличие, заглядывая через интернет. И если находит, то понимает, что домен принадлежит именно Вам (ведь Вы создали эти файлы там, где он попросил и с тем содержимым, которое он указал).

Для того, чтобы поместить проверочные файлы на веб-сервер я использовал доступ по FTP к своему сайту (с помощью программы FileZilla, она бесплатна, имеет русский интерфейс).

Но, если Вы до сих пор не пользовались FTP-клиентом (например, FileZilla), то можете поместить проверочные файлы в нужную папку (директорию) и через обычный файловый менеджер Вашего хостинга. В любом случае Вам понадобится создать недостающие папки (директории) с именами:

.well-known и в ней папку acme-challenge

Выглядят проверочные файлы у меня в FileZilla так, как показано в нижней части скриншота (это снимок только нужной части окна FileZilla): нижняя стрелка показывает на файлы, а верхняя стрелка показывает на путь к файлам; у меня там всегда ещё папка docs - она корневая, так устроен мой хостинг, у Вас может быть иначе.

Поэтому когда мне PowerShell пишет путь
http://orgpsiholog.ru/.well-known/acme-challenge/
я должен проверочные файлы поместить с учётом "docs", т.е. так:
http://orgpsiholog.ru/docs/.well-known/acme-challenge/

Благодарю дружище, создал сертификат, вот только никак не могу привязать к домену, домен находится на reg.ru

Если кто на днях установил там сертификат, дайте ссылку как там делается все это дело

Очень рад пользе!


По идее, у них должен быть мануал по установке сертификата через веб-интерфейс хостинга. А если нет, то напишите в службу поддержки.

Работа с Certbot в описанном в статье способе осуществляется не напрямую, только через командную строку или PowerShell. Я использовал только PowerShell, и запустить PowerShell нужно от имени администратора.

А, вот оно что! У Вас на виндовс 7 тоже не запустилось? А я всё не мог понять что не так.
Вот получается еще один плюс такой установки сертификата удаленной - когда сервер на виндовс 7, а сертификат надо установить, то можно с другого компа все сделать.
И в защиту автора, если честно вот только по Вашей инструкции и смог установить сертификаты. Хоть тут и говорят что в интернете куча, но реально все либо с ошибками, то вообще пропускают кучу пунктов думая что сами догадаются.
Реально я тоже считаю такой ручной способ самым простым и понятным (контролируемым). На самом то деле все операции это создать текстовый файл и закинуть куда надо готовые сертификаты. Но почему то никто не написал кроме Вас что это так просто, все что то там заумное пишут, и мне кажется реально это делается как и во многих других вопросах чтобы просто повысить важность и значимость (недоступность для простых пользователей).

Certbot - это программа, позволяющая создать SSL-сертификат.

А что Вы подразумеваете под open-ssl ?

Вадим, добрый день! Скажите, а как быть если у меня Wildcard сертификат? Этот способ сработает?

Доброго времени! Если под WildCard имеется в виду сертификат подтверждающий домен и все его поддомены, то (на сколько я знаю) нет, для каждого поддомена придётся выпускать свой сертификат. Я делал разные сертификаты для домена и его поддомена (и даже не проверил, будет ли работать, если сделать просто для верхнего домена). Но Вы можете это проверить.

Спасибо большое за быстрый ответ :) Попробую)

Спасибо за ссылку! Выглядит отлично – просто и без лишних данных! Вы проверяли работоспособность этого сервиса и выпущенных им сертификатов? (Мне самому пока не требуется, поэтому я не проверил).

А находил ли кто-либо, как сделать подобное для https? Я держу личный сервер дома, и роутер не позволяет пробросить 80 порт, поэтому использую только 443. До этого пользовался ZeroSSL и SSL.com, но они заделались в русофобы и не позволяют создавать новый сертификат.

Доброго дня! SSL-сертификат для этого и нужен, чтобы сайт работал через https.

Хорошо, что поделились, может ещё кому поможет. Мне наоборот нужна была проверка прав на домен с помощью проверочных файлов.

Пользователь с ником Zadapter попросил добавить его комментарий (он может быть полезен для тех, у кого сайт на ucoz):

Добрый день, прочитав вашу статью "Нужен бесплатный SSL-сертификат? Легко", я потирая ручки уже в предвкушении что сейчас восстановлю доступ по https к сайту нашего предприятия, было ринулся в бой, но потерпел фиаско!Все дело в том, что наш сайт был реализован на хостинге в системе ucoz и пользователям недоступна такая фича как создание папок с точкой в начале, проверял на многих клиентах — везде одно и тоже например в FileZilla такой ответ
Статус: Авторизовались
Статус: Создание каталога '/.blablabla'…
Команда: CWD /
Ответ: 250 OK. Current directory is /
Команда: MKD .blablabla
Ответ: 550 Prohibited directory name
Как заявили в техподдержке — "А обычные пользователи с правами Админ не могут извне создавать такие папки..." И на мой вопрос что делать сказали используйте альтернативные методы верификации и аутентификации. Все тчк.
Прошу вас добавить мое сообщение в комменты к вашему мануалу (потому что я новый юзер на Хабре, и я не могу комментить сообщения старше 30 дней), так как кто-то будет терять время не понимая в чем дело. Вот как то так. Спасибо за внимание и понимание, отдельный сенкс за мануал хороший.

Что вам мешает создать папку "well-known" без точки, в ней создаете папку "acme-challenge" загрузите проверочные файлы, в конце уберите формат файла ( все то что после точки и точку тоже) и будет вам счастье, грузите сертификаты.

Спасибо за инструкции! Вы проверяли этот способ?
(У меня не было необходимости, поэтому не проверял, но тем кто на юкозе наверное полезно знать).

На фоне всех событий что происходят в стране. Да, я сам пользуюсь данным способом, все нормально работает.

Большое спасибо, что поделились! Обязательно кому-то пригодится!

Всем счастливого Нового Года! :)

Наткнулся на подтверждение того, что поисковые системы (конкретно Google) учитывают наличие SSL-сертификата на сайте. Поскольку мне иногда пишут в личку, что мол нет таких данных, то вот ссылки – как минимум с 2014-го года Google учитывает наличие SSL в ранжировании сайтов: https://developers.google.com/search/blog/2014/08/https-as-ranking-signal
и ещё: https://security.googleblog.com/2015/12/indexing-https-pages-by-default.html

на 6-м шаге возникает ошибка при авторизации. по указанному URL выдается нужная строка - но сервер не авторизуется.

Доброго времени! Certbot пишет, что "Центр сертификации не смог проверить созданные вручную файлы вызова. Убедитесь, что вы создали их в правильном месте."

Я не сталкивался с такой проблемой (и до сих пор пользуюсь методом описанным в статье).

Попробуйте проверить, что запускаете PowerShell (х86) с правами администратора, что антивирус\фаервол не блокирует работу Certbot – внесите папку с программой и саму программу в исключения антивируса.

Спасибо за статью! У меня как раз хостинг с ограниченным доступом, где нет возможности запустить certbot. Всё получилось.

Sign up to leave a comment.

Articles