[{"data":1,"prerenderedAt":148},["ShallowReactive",2],{"$flmahywyx5r2y":3,"articles":48},{"slug":4,"title":5,"description":6,"date":7,"updated":7,"tags":8,"emoji":13,"minutes":14,"html":15,"headings":16},"ssl-sertifikat-https","SSL сертификат и HTTPS: как включить","Что даёт сертификат, как включить HTTPS через панель хостинга, Let's Encrypt с certbot, Caddy или Cloudflare и как проверить результат.","2026-10-01",[9,10,11,12],"ssl","https","сертификат","безопасность","shield",3,"\u003Ch2 id=\"korotko\">Коротко\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>HTTPS шифрует трафик между браузером и сайтом и подтверждает, что открыт именно ваш домен. Без него браузеры помечают сайт как небезопасный.\u003C\u002Fli>\n\u003Cli>Бесплатного сертификата Let&#39;s Encrypt хватает большинству сайтов. Платный не шифрует сильнее.\u003C\u002Fli>\n\u003Cli>Проще всего включить SSL кнопкой в панели хостинга, через Caddy или через Cloudflare.\u003C\u002Fli>\n\u003Cli>Продление должно быть автоматическим, а срок жизни сертификатов со временем сокращается.\u003C\u002Fli>\n\u003Cli>Проверяйте результат по замку в браузере и командой \u003Ccode>curl -I\u003C\u002Fcode>.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 id=\"chto-daet-sertifikat\">Что даёт сертификат\u003C\u002Fh2>\n\u003Cp>Сертификат связывает ключ шифрования с доменом. При подключении браузер проверяет срок действия, имя и цепочку доверия. Слово SSL историческое: сейчас работает протокол TLS, но привычное название осталось. Для большинства сайтов достаточно бесплатного сертификата с проверкой домена. Платный отличается проверкой организации и условиями поддержки, а не силой шифрования.\u003C\u002Fp>\n\u003Ch2 id=\"sposoby-vklyuchit-https\">Способы включить HTTPS\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>\u003Cstrong>Панель хостинга.\u003C\u002Fstrong> В разделе SSL или Let&#39;s Encrypt выпустите сертификат для домена и \u003Ccode>www\u003C\u002Fcode>. Продление обычно автоматическое, но условия проверьте у своего хостинга.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Caddy.\u003C\u002Fstrong> Получает и продлевает сертификаты сам.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Certbot\u003C\u002Fstrong> на своём сервере с nginx или Apache.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Cloudflare.\u003C\u002Fstrong> Сертификат для посетителей выпускается автоматически, а на сервере нужен свой.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 id=\"let-39-s-encrypt-i-certbot\">Let&#39;s Encrypt и certbot\u003C\u002Fh2>\n\u003Cp>Нужно, чтобы A-запись домена вела на сервер, порты 80 и 443 были открыты, а nginx отвечал на этом домене.\u003C\u002Fp>\n\u003Cpre class=\"code\">\u003Ccode class=\"hljs language-bash\">\u003Cspan class=\"hljs-built_in\">sudo\u003C\u002Fspan> snap install --classic certbot\n\u003Cspan class=\"hljs-built_in\">sudo\u003C\u002Fspan> \u003Cspan class=\"hljs-built_in\">ln\u003C\u002Fspan> -s \u002Fsnap\u002Fbin\u002Fcertbot \u002Fusr\u002Flocal\u002Fbin\u002Fcertbot\n\u003Cspan class=\"hljs-built_in\">sudo\u003C\u002Fspan> certbot --nginx -d example.com -d www.example.com\n\u003Cspan class=\"hljs-built_in\">sudo\u003C\u002Fspan> certbot renew --dry-run\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Через \u003Ccode>-d\u003C\u002Fcode> перечислите все имена, которые должны открываться по HTTPS. Последняя команда проверяет автоматическое продление.\u003C\u002Fp>\n\u003Ch2 id=\"caddy\">Caddy\u003C\u002Fh2>\n\u003Cpre class=\"code\">\u003Ccode class=\"hljs language-text\">example.com, www.example.com {\n    reverse_proxy 127.0.0.1:3000\n}\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Caddy сам получает сертификат (Let&#39;s Encrypt или ZeroSSL), продлевает его и перенаправляет HTTP на HTTPS. Нужны A-запись на сервер и открытые порты 80 и 443. Полный пример есть в статье \u003Ca href=\"\u002Farticles\u002Fkak-razvernut-sait-na-vps\">как развернуть сайт на VPS\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch2 id=\"cloudflare\">Cloudflare\u003C\u002Fh2>\n\u003Cp>Когда домен стал Active, Universal SSL выпускается и продлевается автоматически, и посетитель видит сертификат Cloudflare. Между Cloudflare и сервером нужен свой сертификат (Let&#39;s Encrypt или Origin CA) и режим Full (strict). Подробности в статье \u003Ca href=\"\u002Farticles\u002Fcloudflare-dlya-domena\">как подключить домен к Cloudflare\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch2 id=\"prodlenie\">Продление\u003C\u002Fh2>\n\u003Cp>Сертификат Let&#39;s Encrypt сейчас действует 90 дней, а, по анонсу компании, срок для стандартного профиля сократят до 64 дней с февраля 2027 и до 45 дней с февраля 2028. Поэтому продление должно идти автоматически. С июня 2025 Let&#39;s Encrypt не присылает письма об истечении срока, так что настройте мониторинг или проверяйте дату сами.\u003C\u002Fp>\n\u003Ch2 id=\"kak-proverit\">Как проверить\u003C\u002Fh2>\n\u003Cpre class=\"code\">\u003Ccode class=\"hljs language-bash\">curl -I https:\u002F\u002Fexample.com\ncurl -I http:\u002F\u002Fexample.com\n\u003Cspan class=\"hljs-built_in\">echo\u003C\u002Fspan> | openssl s_client -connect example.com:443 -servername example.com 2&gt;\u002Fdev\u002Fnull | openssl x509 -noout -dates -subject\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Первая команда не должна выдавать ошибку сертификата. Вторая должна вернуть редирект (301 или 308) на https. Третья показывает даты действия и имя в сертификате. В браузере нажмите на замок рядом с адресом и откройте сведения о сертификате.\u003C\u002Fp>\n\u003Ch2 id=\"smeshannyy-kontent-i-hsts\">Смешанный контент и HSTS\u003C\u002Fh2>\n\u003Cp>Смешанный контент: страница по HTTPS грузит картинки, скрипты или стили по \u003Ccode>http:\u002F\u002F\u003C\u002Fcode>. Браузер блокирует их или предупреждает. Откройте консоль разработчика, найдите такие адреса и замените их на \u003Ccode>https:\u002F\u002F\u003C\u002Fcode> или на относительные.\u003C\u002Fp>\n\u003Cp>HSTS (заголовок Strict-Transport-Security) велит браузеру ходить на сайт только по HTTPS. Включайте осторожно: браузер запомнит правило на весь срок max-age и не даст открыть сайт даже при просроченном сертификате, а быстро отменить это нельзя.\u003C\u002Fp>\n\u003Cp>Начните с малого значения, например 300 секунд, и увеличивайте его, когда всё работает. Параметры includeSubDomains и preload включайте, только если уверены во всех поддоменах.\u003C\u002Fp>\n\u003Ch2 id=\"esli-ne-poluchilos\">Если не получилось\u003C\u002Fh2>\n\u003Col>\n\u003Cli>Сертификат просрочен: выполните \u003Ccode>sudo certbot renew --dry-run\u003C\u002Fcode> и прочитайте ошибку. Частые причины: закрытый порт 80 или изменённая конфигурация.\u003C\u002Fli>\n\u003Cli>Предупреждение о неверном имени: сертификат выпущен не на то имя, например без \u003Ccode>www\u003C\u002Fcode>. Выпустите его заново со всеми именами.\u003C\u002Fli>\n\u003Cli>ERR_TOO_MANY_REDIRECTS: в Cloudflare включён режим Flexible, а сервер сам перенаправляет HTTP на HTTPS, либо два редиректа работают друг против друга.\u003C\u002Fli>\n\u003Cli>Certbot не подтверждает домен: A-запись ведёт не на этот сервер, порт 80 закрыт файрволом, есть AAAA-запись на адрес без сервера или запись CAA не разрешает Let&#39;s Encrypt.\u003C\u002Fli>\n\u003Cli>Ошибки 525 и 526 у Cloudflare: сертификат на сервере недействителен или выпущен на другое имя.\u003C\u002Fli>\n\u003Cli>Часы на устройстве сбиты: браузер считает действующий сертификат просроченным.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>Если что-то непонятно, напишите мне в Telegram: @lztcoder\u003C\u002Fp>\n",[17,21,24,27,30,33,36,39,42,45],{"id":18,"text":19,"level":20},"korotko","Коротко",2,{"id":22,"text":23,"level":20},"chto-daet-sertifikat","Что даёт сертификат",{"id":25,"text":26,"level":20},"sposoby-vklyuchit-https","Способы включить HTTPS",{"id":28,"text":29,"level":20},"let-39-s-encrypt-i-certbot","Let&#39;s Encrypt и certbot",{"id":31,"text":32,"level":20},"caddy","Caddy",{"id":34,"text":35,"level":20},"cloudflare","Cloudflare",{"id":37,"text":38,"level":20},"prodlenie","Продление",{"id":40,"text":41,"level":20},"kak-proverit","Как проверить",{"id":43,"text":44,"level":20},"smeshannyy-kontent-i-hsts","Смешанный контент и HSTS",{"id":46,"text":47,"level":20},"esli-ne-poluchilos","Если не получилось",[49,59,68,77,86,95,101,106,114,125,133,140,146],{"slug":50,"title":51,"description":52,"date":7,"updated":7,"tags":53,"emoji":57,"minutes":58},"kak-vybrat-hosting","Как выбрать хостинг для сайта или бота","Чем отличаются виртуальный хостинг, VPS, облако и статический хостинг, сколько памяти нужно сайту и боту и что спросить у продавца.",[54,55,56],"хостинг","vps","сервер","server",4,{"slug":60,"title":61,"description":62,"date":7,"updated":7,"tags":63,"emoji":67,"minutes":58},"kak-zapustit-telegram-bota-na-servere","Как запустить Telegram бота на сервере","Polling или webhook, где взять токен и как его защитить, как запускать бота через systemd, pm2 или Docker и что делать при сбоях.",[64,65,56,66],"telegram","бот","webhook","bot",{"slug":69,"title":70,"description":71,"date":7,"updated":7,"tags":72,"emoji":76,"minutes":58},"kak-kupit-domen","Как и где купить домен","Какую зону выбрать, что проверить перед оплатой, чем регистратор отличается от перепродавца и как не потерять домен.",[73,74,75],"домен","регистратор","dns","domain",{"slug":78,"title":79,"description":80,"date":7,"updated":7,"tags":81,"emoji":85,"minutes":58},"kak-oplatit-zakaz-kriptovalutoy","Как оплатить заказ криптовалютой","Как оплатить счёт из бота на странице Heleket, выбрать валюту и сеть, отправить точную сумму, проверить ссылку и действовать при ошибке.",[82,83,84,12],"оплата","криптовалюта","heleket","pay",{"slug":87,"title":88,"description":89,"date":7,"updated":7,"tags":90,"emoji":94,"minutes":14},"kak-podgotovit-brif-dlya-sayta","Как подготовить бриф для сайта или бота","Что описать заранее, чтобы разработчик дал реалистичную оценку, от цели и аудитории до интеграций, срока и бюджета. Есть шаблон.",[91,92,65,93],"бриф","сайт","разработка","doc",{"slug":96,"title":97,"description":98,"date":7,"updated":7,"tags":99,"emoji":100,"minutes":58},"cloudflare-dlya-domena","Как подключить домен к Cloudflare","Как добавить домен в Cloudflare, сменить NS, выбрать режим SSL\u002FTLS и понять разницу между оранжевым и серым облаком.",[34,75,73,9],"cloud",{"slug":102,"title":103,"description":104,"date":7,"updated":7,"tags":105,"emoji":76,"minutes":58},"kak-privyazat-domen-k-hostu","Как привязать домен к хостингу","Что такое A-запись и NS, как подключить домен к хостингу или VPS и как проверить, что всё заработало.",[73,75,54],{"slug":107,"title":108,"description":109,"date":7,"updated":7,"tags":110,"emoji":113,"minutes":58},"kak-razvernut-sait-na-vps","Как развернуть сайт на VPS","Пошаговый путь для Ubuntu LTS от пользователя и SSH-ключа до Caddy с HTTPS, запуска через pm2, логов, обновлений и бэкапов.",[55,111,112,31],"ubuntu","node","rocket",{"slug":115,"title":116,"description":117,"date":7,"updated":7,"tags":118,"emoji":124,"minutes":58},"pochta-na-svoem-domene","Почта на своём домене: MX, SPF, DKIM, DMARC","Как подключить почту на своём домене, настроить MX, SPF, DKIM и DMARC, проверить доставку и понять, почему письма попадают в спам.",[119,120,121,122,123],"почта","mx","spf","dkim","dmarc","mail",{"slug":126,"title":127,"description":128,"date":7,"updated":7,"tags":129,"emoji":132,"minutes":58},"spamblok-telegram-chto-delat","Спамблок в Telegram: что это и что делать","Что такое ограничения аккаунта Telegram, как проверить статус через @SpamBot, как подать апелляцию и чего делать нельзя.",[64,130,131,12],"спамблок","аккаунт","help",{"slug":134,"title":135,"description":136,"date":7,"updated":7,"tags":137,"emoji":139,"minutes":58},"cloudflare-api-klyuch","Cloudflare: API токен и Global API Key","Чем API токен отличается от Global API Key в Cloudflare, какие права нужны для DNS, как выглядят запросы и что делать при утечке ключа.",[34,138,12],"api","key",{"slug":141,"title":142,"description":143,"date":7,"updated":7,"tags":144,"emoji":75,"minutes":58},"dns-zapisi-prostymi-slovami","DNS записи простыми словами","Что означают записи A, AAAA, CNAME, MX, TXT, NS, SRV и CAA, что такое TTL и почему CNAME нельзя поставить на корень домена.",[75,73,145],"записи",{"slug":4,"title":5,"description":6,"date":7,"updated":7,"tags":147,"emoji":13,"minutes":14},[9,10,11,12],1791314129073]