[{"data":1,"prerenderedAt":541},["ShallowReactive",2],{"wiki-/wiki/security/ssl":3},{"id":4,"title":5,"body":6,"description":532,"extension":533,"meta":534,"navigation":535,"path":536,"section":537,"seo":538,"stem":539,"__hash__":540},"wiki/wiki/security/ssl.md","SSL-сертификат через Certbot",{"type":7,"value":8,"toc":514},"minimark",[9,21,27,30,35,38,42,55,59,70,74,79,82,111,114,130,133,149,153,156,180,183,200,203,222,225,228,232,235,243,246,264,268,271,287,290,294,309,316,319,333,337,344,347,363,370,374,384,394,404,414,428,432,442,455,461,467,471,491,495,510],[10,11,12,16,17,20],"p",{},[13,14,15],"strong",{},"Время:"," 10 мин · ",[13,18,19],{},"Сложность:"," ★☆☆☆☆",[10,22,23,26],{},[13,24,25],{},"Подходит:"," ✓ Ubuntu 22.04 · ✓ Debian 12",[28,29],"hr",{},[31,32,34],"h2",{"id":33},"краткое-описание","Краткое описание",[10,36,37],{},"Certbot — официальный клиент Let's Encrypt для автоматического получения и обновления бесплатных SSL-сертификатов. Поддерживает Nginx и Apache: сам редактирует конфигурацию веб-сервера и добавляет обновление по расписанию через systemd.",[31,39,41],{"id":40},"когда-пригодится","Когда пригодится",[43,44,45,49,52],"ul",{},[46,47,48],"li",{},"При первом запуске сайта на VPS",[46,50,51],{},"При добавлении нового домена или поддомена",[46,53,54],{},"При переходе с платного сертификата на бесплатный Let's Encrypt",[31,56,58],{"id":57},"что-понадобится","Что понадобится",[43,60,61,64,67],{},[46,62,63],{},"Домен, A-запись которого указывает на IP вашего сервера",[46,65,66],{},"Порт 80 открыт в UFW или другом файрволе (Let's Encrypt проверяет домен через HTTP)",[46,68,69],{},"Установленный Nginx или Apache (для режима с плагином)",[31,71,73],{"id":72},"пошаговая-инструкция","Пошаговая инструкция",[75,76,78],"h3",{"id":77},"_1-установка-certbot","1. Установка Certbot",[10,80,81],{},"Базовый пакет:",[83,84,89],"pre",{"className":85,"code":86,"language":87,"meta":88,"style":88},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","apt install -y certbot\n","bash","",[90,91,92],"code",{"__ignoreMap":88},[93,94,97,101,105,108],"span",{"class":95,"line":96},"line",1,[93,98,100],{"class":99},"sBMFI","apt",[93,102,104],{"class":103},"sfazB"," install",[93,106,107],{"class":103}," -y",[93,109,110],{"class":103}," certbot\n",[10,112,113],{},"Плагин для Nginx:",[83,115,117],{"className":85,"code":116,"language":87,"meta":88,"style":88},"apt install -y python3-certbot-nginx\n",[90,118,119],{"__ignoreMap":88},[93,120,121,123,125,127],{"class":95,"line":96},[93,122,100],{"class":99},[93,124,104],{"class":103},[93,126,107],{"class":103},[93,128,129],{"class":103}," python3-certbot-nginx\n",[10,131,132],{},"Плагин для Apache:",[83,134,136],{"className":85,"code":135,"language":87,"meta":88,"style":88},"apt install -y python3-certbot-apache\n",[90,137,138],{"__ignoreMap":88},[93,139,140,142,144,146],{"class":95,"line":96},[93,141,100],{"class":99},[93,143,104],{"class":103},[93,145,107],{"class":103},[93,147,148],{"class":103}," python3-certbot-apache\n",[75,150,152],{"id":151},"_2-получить-сертификат","2. Получить сертификат",[10,154,155],{},"Для Nginx (Certbot сам отредактирует конфигурацию):",[83,157,159],{"className":85,"code":158,"language":87,"meta":88,"style":88},"certbot --nginx -d example.com -d www.example.com\n",[90,160,161],{"__ignoreMap":88},[93,162,163,166,169,172,175,177],{"class":95,"line":96},[93,164,165],{"class":99},"certbot",[93,167,168],{"class":103}," --nginx",[93,170,171],{"class":103}," -d",[93,173,174],{"class":103}," example.com",[93,176,171],{"class":103},[93,178,179],{"class":103}," www.example.com\n",[10,181,182],{},"Для Apache:",[83,184,186],{"className":85,"code":185,"language":87,"meta":88,"style":88},"certbot --apache -d example.com\n",[90,187,188],{"__ignoreMap":88},[93,189,190,192,195,197],{"class":95,"line":96},[93,191,165],{"class":99},[93,193,194],{"class":103}," --apache",[93,196,171],{"class":103},[93,198,199],{"class":103}," example.com\n",[10,201,202],{},"Standalone-режим (без веб-сервера, Certbot поднимает собственный HTTP-сервер):",[83,204,206],{"className":85,"code":205,"language":87,"meta":88,"style":88},"certbot certonly --standalone -d example.com\n",[90,207,208],{"__ignoreMap":88},[93,209,210,212,215,218,220],{"class":95,"line":96},[93,211,165],{"class":99},[93,213,214],{"class":103}," certonly",[93,216,217],{"class":103}," --standalone",[93,219,171],{"class":103},[93,221,199],{"class":103},[10,223,224],{},"В standalone-режиме порт 80 должен быть свободен — остановите Nginx/Apache перед запуском.",[10,226,227],{},"Certbot задаст несколько вопросов: email для уведомлений об истечении сертификата и согласие с условиями использования.",[75,229,231],{"id":230},"_3-где-хранятся-сертификаты","3. Где хранятся сертификаты",[10,233,234],{},"После успешного получения файлы находятся в:",[83,236,241],{"className":237,"code":239,"language":240},[238],"language-text","/etc/letsencrypt/live/example.com/\n├── cert.pem       — сертификат домена\n├── chain.pem      — промежуточные сертификаты\n├── fullchain.pem  — cert.pem + chain.pem (используйте в Nginx/Apache)\n└── privkey.pem    — приватный ключ\n","text",[90,242,239],{"__ignoreMap":88},[10,244,245],{},"В конфигурации Nginx укажите:",[83,247,251],{"className":248,"code":249,"language":250,"meta":88,"style":88},"language-nginx shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","ssl_certificate     /etc/letsencrypt/live/example.com/fullchain.pem;\nssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;\n","nginx",[90,252,253,258],{"__ignoreMap":88},[93,254,255],{"class":95,"line":96},[93,256,257],{},"ssl_certificate     /etc/letsencrypt/live/example.com/fullchain.pem;\n",[93,259,261],{"class":95,"line":260},2,[93,262,263],{},"ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;\n",[75,265,267],{"id":266},"_4-автообновление","4. Автообновление",[10,269,270],{},"Certbot автоматически устанавливает systemd-таймер. Проверьте:",[83,272,274],{"className":85,"code":273,"language":87,"meta":88,"style":88},"systemctl status certbot.timer\n",[90,275,276],{"__ignoreMap":88},[93,277,278,281,284],{"class":95,"line":96},[93,279,280],{"class":99},"systemctl",[93,282,283],{"class":103}," status",[93,285,286],{"class":103}," certbot.timer\n",[10,288,289],{},"Таймер запускает обновление дважды в день. Сертификаты обновляются только если до истечения осталось меньше 30 дней.",[75,291,293],{"id":292},"_5-проверить-автообновление-вручную","5. Проверить автообновление вручную",[83,295,297],{"className":85,"code":296,"language":87,"meta":88,"style":88},"certbot renew --dry-run\n",[90,298,299],{"__ignoreMap":88},[93,300,301,303,306],{"class":95,"line":96},[93,302,165],{"class":99},[93,304,305],{"class":103}," renew",[93,307,308],{"class":103}," --dry-run\n",[10,310,311,312,315],{},"Флаг ",[90,313,314],{},"--dry-run"," проходит весь процесс без реального обновления — используйте для проверки что всё настроено правильно.",[10,317,318],{},"Принудительное обновление (без dry-run):",[83,320,322],{"className":85,"code":321,"language":87,"meta":88,"style":88},"certbot renew --force-renewal\n",[90,323,324],{"__ignoreMap":88},[93,325,326,328,330],{"class":95,"line":96},[93,327,165],{"class":99},[93,329,305],{"class":103},[93,331,332],{"class":103}," --force-renewal\n",[31,334,336],{"id":335},"проверка-результата","Проверка результата",[10,338,339,340,343],{},"Откройте ",[90,341,342],{},"https://example.com"," в браузере. В адресной строке должен быть замок без предупреждений. Кликните на замок — увидите информацию о сертификате с Let's Encrypt в качестве издателя.",[10,345,346],{},"Или проверьте через командную строку:",[83,348,350],{"className":85,"code":349,"language":87,"meta":88,"style":88},"curl -I https://example.com\n",[90,351,352],{"__ignoreMap":88},[93,353,354,357,360],{"class":95,"line":96},[93,355,356],{"class":99},"curl",[93,358,359],{"class":103}," -I",[93,361,362],{"class":103}," https://example.com\n",[10,364,365,366,369],{},"В ответе должен быть ",[90,367,368],{},"HTTP/2 200"," (или 301 если настроен редирект).",[31,371,373],{"id":372},"возможные-ошибки","Возможные ошибки",[10,375,376,379,380,383],{},[13,377,378],{},"«Unable to connect to» или «Connection refused»"," — порт 80 закрыт в UFW. Выполните ",[90,381,382],{},"ufw allow 80"," и повторите.",[10,385,386,389,390,393],{},[13,387,388],{},"«Too many certificates already issued»"," — Let's Encrypt ограничивает выдачу до 5 сертификатов на домен в неделю. Подождите или используйте тестовую среду: добавьте флаг ",[90,391,392],{},"--staging"," к команде certbot.",[10,395,396,399,400,403],{},[13,397,398],{},"«DNS problem: NXDOMAIN»"," — домен не резолвится. Проверьте A-запись: ",[90,401,402],{},"dig example.com",". Изменения DNS могут распространяться до 24 часов.",[10,405,406,409,410,413],{},[13,407,408],{},"«Problem binding to port 80»"," — порт занят Nginx или Apache. В standalone-режиме остановите веб-сервер перед запуском certbot: ",[90,411,412],{},"systemctl stop nginx",".",[10,415,416,419,420,423,424,427],{},[13,417,418],{},"Certbot отредактировал конфиг Nginx и сайт перестал работать"," — проверьте конфигурацию: ",[90,421,422],{},"nginx -t",". Откатите изменения из резервной копии (Certbot сохраняет оригинал с суффиксом ",[90,425,426],{},".bak",").",[31,429,431],{"id":430},"faq","FAQ",[10,433,434,437,438,441],{},[13,435,436],{},"Сколько доменов можно добавить в один сертификат?","\nДо 100 доменов через флаги ",[90,439,440],{},"-d",". Let's Encrypt поддерживает SAN (Subject Alternative Names).",[10,443,444,451,452,413],{},[13,445,446,447,450],{},"Работает ли Certbot с wildcard-доменами (",[90,448,449],{},"*.example.com",")?","\nДа, но для wildcard-сертификатов нужна DNS-верификация вместо HTTP. Используйте ",[90,453,454],{},"certbot certonly --manual --preferred-challenges dns -d *.example.com",[10,456,457,460],{},[13,458,459],{},"Что произойдёт если не обновить сертификат вовремя?","\nБраузеры покажут предупреждение «Соединение не защищено», а сайт станет недоступен для большинства пользователей. Certbot отправит предупреждение на email за 20 и 10 дней до истечения.",[10,462,463,466],{},[13,464,465],{},"Можно ли использовать Certbot без доменного имени?","\nНет. Let's Encrypt выдаёт сертификаты только для доменных имён, не для IP-адресов.",[31,468,470],{"id":469},"полезные-ссылки","Полезные ссылки",[43,472,473,479,485],{},[46,474,475,478],{},[90,476,477],{},"certbot --help"," — полный список команд и флагов",[46,480,481,484],{},[90,482,483],{},"/etc/letsencrypt/renewal/"," — конфигурация автообновления для каждого домена",[46,486,487,490],{},[90,488,489],{},"/var/log/letsencrypt/letsencrypt.log"," — журнал операций Certbot",[31,492,494],{"id":493},"следующие-статьи","Следующие статьи",[43,496,497,504],{},[46,498,499],{},[500,501,503],"a",{"href":502},"/wiki/windows/iis","Установка и настройка IIS",[46,505,506],{},[500,507,509],{"href":508},"/wiki/panels/hestia","Управление сервером через HestiaCP",[511,512,513],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":88,"searchDepth":260,"depth":260,"links":515},[516,517,518,519,527,528,529,530,531],{"id":33,"depth":260,"text":34},{"id":40,"depth":260,"text":41},{"id":57,"depth":260,"text":58},{"id":72,"depth":260,"text":73,"children":520},[521,523,524,525,526],{"id":77,"depth":522,"text":78},3,{"id":151,"depth":522,"text":152},{"id":230,"depth":522,"text":231},{"id":266,"depth":522,"text":267},{"id":292,"depth":522,"text":293},{"id":335,"depth":260,"text":336},{"id":372,"depth":260,"text":373},{"id":430,"depth":260,"text":431},{"id":469,"depth":260,"text":470},{"id":493,"depth":260,"text":494},"Как бесплатно получить SSL-сертификат Let's Encrypt с помощью Certbot.","md",{},true,"/wiki/security/ssl","Безопасность",{"title":5,"description":532},"wiki/security/ssl","4-xoFCHd9IYVIAjz22fHWRzYReQOZRUxh7ksnNsnFKM",1788285515416]