[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"custom-urls-\u002Flinux\u002Fssl":3,"categories-menu":10,"post-ssl-dlya-domenov-ot-let-s-encrypt":120,"post-content-ssl-dlya-domenov-ot-let-s-encrypt":156,"post-comments-fa4sibhpf6ohmet6qo3s4ywx":1441,"tags":1442},{"type":4,"entity":5,"path":8},"post",{"documentId":6,"slug":7},"fa4sibhpf6ohmet6qo3s4ywx","ssl-dlya-domenov-ot-let-s-encrypt",{"uri":9},"\u002Flinux\u002Fssl",[11,31,104],{"id":12,"documentId":13,"name":14,"slug":15,"desc":16,"published":17,"uri":18,"showmenu":17,"createdAt":19,"updatedAt":20,"publishedAt":21,"locale":22,"heading":16,"order":23,"posts":24},4,"dw88ipzixowg4rbtqhna1fck","Личное","self",null,true,"\u002Fself","2026-05-17T11:06:55.868Z","2026-05-19T09:58:08.297Z","2026-05-19T09:58:08.291Z","en",0,[25,28],{"id":26,"documentId":27},61,"otr8hblo0fac9ovggct48osv",{"id":29,"documentId":30},76,"z77qh8cg0mcz533087epr6xu",{"id":32,"documentId":33,"name":34,"slug":35,"desc":16,"published":17,"uri":36,"showmenu":17,"createdAt":37,"updatedAt":38,"publishedAt":39,"locale":22,"heading":16,"order":40,"posts":41},2,"oxow5hzkizd4dgongka7hxvf","Рабочее","work","\u002Fwork","2026-05-15T07:43:18.016Z","2026-05-19T09:58:08.301Z","2026-05-19T09:58:08.295Z",1,[42,45,48,51,54,57,60,63,65,68,71,74,77,80,83,86,89,92,95,98,101],{"id":43,"documentId":44},71,"tciv16vv801l5eg5m4rx3gal",{"id":46,"documentId":47},80,"x8y72z9yibyjcllzwes23h43",{"id":49,"documentId":50},81,"v06yaukpbxnypv0bh0s48osu",{"id":52,"documentId":53},82,"wgd4f0022pq1pwbvq04rq0x0",{"id":55,"documentId":56},83,"i8wiipabpbxtcofme04ncqjy",{"id":58,"documentId":59},84,"ny1dz9tknms3219nrc5oaahy",{"id":61,"documentId":62},89,"igz67vanm4ke94cilkgrts2i",{"id":64,"documentId":6},95,{"id":66,"documentId":67},96,"u7g77d0bu0rv1u67qea9kglu",{"id":69,"documentId":70},98,"exnbib5xi3fgt7mku9q8ithc",{"id":72,"documentId":73},99,"bja31j10up0ffiqw1j5nfr79",{"id":75,"documentId":76},100,"ztrhdkce10c349k6jngsqz72",{"id":78,"documentId":79},101,"gsf74mv1zc39kkejpvy70lfk",{"id":81,"documentId":82},102,"m7c1icp5gt0x73ssyc67atvc",{"id":84,"documentId":85},103,"yz8vml65wloblc0dsp1okc8l",{"id":87,"documentId":88},104,"lquxceynryigq9wdydiwby7f",{"id":90,"documentId":91},105,"yy6x55uwn90hzkzz0786ev1q",{"id":93,"documentId":94},106,"ns37ttwnqxfc86lw6355bx9n",{"id":96,"documentId":97},107,"bjlqk6v41quti6geq9hs4ta6",{"id":99,"documentId":100},108,"ztumsu968y7otczfxrol0o19",{"id":102,"documentId":103},109,"xxxi8etz2ay3839xvw2oz9ym",{"id":105,"documentId":106,"name":107,"slug":108,"desc":16,"published":17,"uri":109,"showmenu":17,"createdAt":110,"updatedAt":111,"publishedAt":112,"locale":22,"heading":16,"order":32,"posts":113},3,"cat0obshestvennoe000001","Общественное","public","\u002Fpublic","2026-05-15T18:29:50.696Z","2026-05-19T09:58:05.992Z","2026-05-19T09:58:05.985Z",[114,117],{"id":115,"documentId":116},74,"u55grcuibxa3e64ymhoaav2v",{"id":118,"documentId":119},92,"rcz3w4mhmhb54ps3o8j462fp",{"id":64,"documentId":6,"title":121,"slug":7,"content":122,"desc":123,"intro":121,"uri":9,"published":17,"publishedDate":124,"showComments":17,"canComment":17,"telegramId":16,"telegramLink":16,"telegramHash":16,"telegramSetReaction":125,"telegramPasteImage":125,"telegramPasteTitle":125,"telegramPasteLink":125,"internalMeta":126,"createdAt":128,"updatedAt":129,"publishedAt":130,"locale":16,"coverCaption":16,"showOnHome":17,"category":131,"cover":16,"tags":132,"author":140,"comments":23,"reactions":155},"SSL для доменов от Let's Encrypt","Устанавливаем приложение:\n`apt install -y certbot`\n\nДобавляем конфиг, где указываем свой email в переменную `EMAIL`, чтобы важные уведомления приходили на него:\n\n```bash\nEMAIL=youmail@domain.com; \\\nmkdir -p \u002Fetc\u002Fletsencrypt; \\\ntee \u002Fetc\u002Fletsencrypt\u002Fcli.ini \u003C\u003CEOF\n\n#\nauthenticator = webroot\nwebroot-path = \u002Fvar\u002Fwww\u002Fhtml\n\n#\nagree-tos = True\nemail = $EMAIL\n\n#\ntext = True\n#quiet = True\n\n#\npost-hook = service nginx reload\n\n#\nmax-log-backups = 0\nEOF\n```\n\nПосле проверяем, корректно ли установилось мыло\n`grep email \u002Fetc\u002Fletsencrypt\u002Fcli.ini`\n\n## Конфиг NGINX\n\nНастройка NGINX конфига не обязательна, если вы используете modxPanelDaemon последней версии – там уже всё прописано. Просто, надо будет в `\u002Fvar\u002Fwww\u002FUSERNAME\u002Fdomains.nginx` вначале указать `set $is_https '1';` и в `\u002Fvar\u002Fwww\u002FUSERNAME\u002Fmain.nginx` раскоментировать `#include \u002Fetc\u002Fnginx\u002Fssl\u002FSITEDOMAIN.conf;` указав основной домен сертификата для вашего сайта.\n**Сделать это нужно после того, как для домена будут выпущены сертификаты.**\n\nВ ином случае, в конфиг надо добавить, что-то вроде:\n\n```nginx\nlisten 80;\nlisten 443 ssl;\nlisten [::]:443 ssl;\nlocation \u002F.well-known {\n    root \u002Fvar\u002Fwww\u002Fhtml;\n}\n# other code\n```\n\nИ `service nginx reload`\n\n### Директория .well-known\n\nТеперь надо проверить, доступна ли директория `\u002F.well-known` для Let's Encrypt из веба. Для этого в ней создаём тестовый файл\n\n```bash\nmkdir -p \u002Fvar\u002Fwww\u002Fhtml\u002F.well-known\u002Facme-challenge \\\n&& echo OK > \u002Fvar\u002Fwww\u002Fhtml\u002F.well-known\u002Facme-challenge\u002Ftest.html\n```\n\nОткрываем в браузере `http:\u002F\u002FYOU_DOMAIN.ru\u002F.well-known\u002Facme-challenge\u002Ftest.html`, если всё `OK`, то удаляем тестовые файлы:\n`rm \u002Fvar\u002Fwww\u002Fhtml\u002F.well-known\u002Facme-challenge\u002Ftest.html && rmdir \u002Fvar\u002Fwww\u002Fhtml\u002F.well-known\u002Facme-challenge`\n\n## Вспомогательные скрипты\n\nВыпуск сертификатов:\n\n```bash\ntee \u002Fusr\u002Flocal\u002Fbin\u002Fcertbot-certonly \u003C\u003C'EOF'\n#!\u002Fbin\u002Fsh\nIFS=\",\"\ncertbot certonly -d \"$*\";\nEOF\nchmod +x \u002Fusr\u002Flocal\u002Fbin\u002Fcertbot-certonly\n```\n\nИспользовать так:\n`certbot-certonly domain.ru www.domain.ru`\n\nСоздание NGINX конфига сертификатов:\n\n```bash\ntee \u002Fusr\u002Flocal\u002Fbin\u002Fupdate-certs \u003C\u003C'DOC'\n#!\u002Fbin\u002Fbash\nmkdir -p \u002Fetc\u002Fnginx\u002Fssl\nfor CN in \u002Fetc\u002Fletsencrypt\u002Flive\u002F*\u002F\ndo\n    dest=\u002Fetc\u002Fnginx\u002Fssl\u002F$(basename $CN).conf\n    names=$(openssl x509 -text -in $CN\u002Fcert.pem |\n        grep -o 'DNS:[^,]*' | cut -f2 -d: | xargs);\n    (\n        echo \"# include ${dest#\u002Fetc\u002Fnginx\u002F};\"\n        echo \"# server_name $names;\"\n        echo \"ssl_certificate $CN\u002Ffullchain.pem;\"\n        echo \"ssl_certificate_key $CN\u002Fprivkey.pem;\"\n        echo \"ssl_trusted_certificate $CN\u002Fchain.pem;\"\n        echo\n    ) | tee $dest;\ndone\nDOC\nchmod +x \u002Fusr\u002Flocal\u002Fbin\u002Fupdate-certs\n```\n\nИспользовать так:\n`update-certs`\n\n## Выпускаем сертификаты\n\n`certbot-certonly domain.com www.domain.com`\n\nОбновляем список конфигов для сертификатов:\n`update-certs`\n\nИ проверяем сертификаты в папке:\n`grep -h '^#' \u002Fetc\u002Fnginx\u002Fssl\u002F*`\n\nДалее, в `\u002Fvar\u002Fwww\u002FUSERNAME\u002Fdomains.nginx` заменить:\n`set $is_https '0';`\nна:\n`set $is_https '1';`\n\nА в `\u002Fvar\u002Fwww\u002FUSERNAME\u002Fmain.nginx` раскоментировать `#include \u002Fetc\u002Fnginx\u002Fssl\u002FSITEDOMAIN.conf;`, указав основной домен сертификата для вашего сайта.\n\nИ `service nginx reload`\n\n## Перевыпуск сертификатов\n\nДобавим в крон перевыпуск сертификатов:\n`57 *\u002F12 * * * certbot renew --allow-subset-of-names`\n\n## Добавить поддомен в сертификат\n\nМожно добавить до 100 доменов и поддоменов в уже выпущенный сертификат.\n\n```bash\ncertbot certonly --expand \\\n-d example.com \\\n-d www.example.com \\\n-d other.example.com\n```\n\nВместо `-d example.com` надо указать основной домен существующего сертификата, а далее уже домены, которыми сертификат нужно расширить.\n\n## Возможные проблемы\n\nСайт может не открываться и выдавать \"Ошибку соединения\".\nТут может потребоваться в `\u002Fvar\u002Fwww\u002FUSERNAME\u002Fmain.nginx` заменить:\n\n```nginx\nlisten 443 ssl;\nlisten [::]:443 ssl;\n```\n\nна:\n\n```nginx\nlisten 443 ssl default_server;\nlisten [::]:443 ssl default_server;\n```\n\n## Удаление ненужных сертификатов\n\nЕсли на сервере нужно удалить некоторые сертификаты, то можно воспользоваться командой:\n`certbot delete`\nи выбрать, какие сертификаты надо исключить из перевыпуска.\n\nЛибо прямой командой:\n`certbot delete --cert-name example.com`\n\n## Необязательные процедуры\n\nДля высокого результата по тесту (https:\u002F\u002Fwww.ssllabs.com\u002Fssltest\u002Fanalyze.html?d=https:\u002F\u002Fwww.gvozdb.ru) следует отказаться от DHE шифров в пользу ECDHE. Также с начала 2020 года устарел TLS 1.0\u002F1.1, поэтому придётся обновить NGINX выше версии 1.12, чтобы можно было пользоваться TLS 1.3. Делается по [данной статье](\u002Flinux\u002Fnginx).","","2020-04-19T06:53:00.000Z",false,{"modxId":127,"addToTelegram":125,"editInTelegram":125,"removeFromTelegram":125},166,"2026-05-16T14:27:44.472Z","2026-05-16T20:16:56.213Z","2026-05-16T14:27:44.463Z",{"id":32,"documentId":33,"name":34,"slug":35,"desc":16,"published":17,"uri":36,"showmenu":17,"createdAt":37,"updatedAt":38,"publishedAt":39,"locale":22,"heading":16,"order":40},[133],{"id":134,"documentId":135,"name":136,"slug":137,"textcolor":16,"bgcolor":16,"published":17,"uri":16,"createdAt":138,"updatedAt":138,"publishedAt":139,"locale":22,"heading":16,"desc":16},15,"aju4latl5hi6906pt0ktlb1g","Linux","linux","2026-05-16T10:03:45.426Z","2026-05-16T10:03:45.422Z",{"id":40,"documentId":141,"username":142,"provider":123,"confirmed":17,"blocked":125,"telegramId":143,"telegramData":144,"icon":16,"firstname":148,"lastname":147,"phone":145,"locale":16,"role":149,"avatar":16},"mr9zlrq1858u3k1t8r6dmlly","pavelgvozdb","133652371",{"id":143,"phone":145,"premium":125,"language":146,"lastname":147,"username":142,"firstname":148},"77025551199","ru","Гвоздь","Павел",{"id":105,"documentId":150,"name":151,"description":152,"type":153,"createdAt":154,"updatedAt":154,"publishedAt":154,"locale":16},"agv9d9dnu7pxc9ked3amj647","Admin","Главный админ блога — полный доступ к управлению на фронтенде","admin","2026-05-15T18:45:58.088Z",{"like":40,"dislike":23},{"data":157,"body":159,"toc":1429},{"title":123,"description":158},"Устанавливаем приложение:\napt install -y certbot",{"type":160,"children":161},"root",[162,177,190,451,462,469,512,517,636,647,654,667,723,750,756,761,838,849,854,1034,1044,1050,1059,1069,1080,1105,1123,1132,1138,1149,1155,1160,1234,1247,1253,1265,1306,1311,1364,1370,1383,1394,1400,1423],{"type":163,"tag":164,"props":165,"children":166},"element","p",{},[167,170],{"type":168,"value":169},"text","Устанавливаем приложение:\n",{"type":163,"tag":171,"props":172,"children":174},"code",{"className":173},[],[175],{"type":168,"value":176},"apt install -y certbot",{"type":163,"tag":164,"props":178,"children":179},{},[180,182,188],{"type":168,"value":181},"Добавляем конфиг, где указываем свой email в переменную ",{"type":163,"tag":171,"props":183,"children":185},{"className":184},[],[186],{"type":168,"value":187},"EMAIL",{"type":168,"value":189},", чтобы важные уведомления приходили на него:",{"type":163,"tag":191,"props":192,"children":197},"pre",{"className":193,"code":194,"language":195,"meta":123,"style":196},"language-bash shiki shiki-themes github-light catppuccin-mocha","EMAIL=youmail@domain.com; \\\nmkdir -p \u002Fetc\u002Fletsencrypt; \\\ntee \u002Fetc\u002Fletsencrypt\u002Fcli.ini \u003C\u003CEOF\n\n#\nauthenticator = webroot\nwebroot-path = \u002Fvar\u002Fwww\u002Fhtml\n\n#\nagree-tos = True\nemail = $EMAIL\n\n#\ntext = True\n#quiet = True\n\n#\npost-hook = service nginx reload\n\n#\nmax-log-backups = 0\nEOF\n","bash","--shiki-default:#24292e;--shiki-dark:#cdd6f4;--shiki-default-bg:#fff;--shiki-dark-bg:#1e1e2e",[198],{"type":163,"tag":171,"props":199,"children":200},{"__ignoreMap":123},[201,235,263,286,294,303,312,321,329,337,346,360,368,376,385,393,401,409,418,426,434,443],{"type":163,"tag":202,"props":203,"children":205},"span",{"class":204,"line":40},"line",[206,211,217,223,229],{"type":163,"tag":202,"props":207,"children":209},{"style":208},"--shiki-default:#24292E;--shiki-dark:#CDD6F4",[210],{"type":168,"value":187},{"type":163,"tag":202,"props":212,"children":214},{"style":213},"--shiki-default:#D73A49;--shiki-dark:#94E2D5",[215],{"type":168,"value":216},"=",{"type":163,"tag":202,"props":218,"children":220},{"style":219},"--shiki-default:#032F62;--shiki-dark:#A6E3A1",[221],{"type":168,"value":222},"youmail@domain.com",{"type":163,"tag":202,"props":224,"children":226},{"style":225},"--shiki-default:#24292E;--shiki-dark:#9399B2",[227],{"type":168,"value":228},";",{"type":163,"tag":202,"props":230,"children":232},{"style":231},"--shiki-default:#005CC5;--shiki-dark:#F5C2E7",[233],{"type":168,"value":234}," \\\n",{"type":163,"tag":202,"props":236,"children":237},{"class":204,"line":32},[238,244,250,255,259],{"type":163,"tag":202,"props":239,"children":241},{"style":240},"--shiki-default:#6F42C1;--shiki-default-font-style:inherit;--shiki-dark:#89B4FA;--shiki-dark-font-style:italic",[242],{"type":168,"value":243},"mkdir",{"type":163,"tag":202,"props":245,"children":247},{"style":246},"--shiki-default:#005CC5;--shiki-dark:#A6E3A1",[248],{"type":168,"value":249}," -p",{"type":163,"tag":202,"props":251,"children":252},{"style":219},[253],{"type":168,"value":254}," \u002Fetc\u002Fletsencrypt",{"type":163,"tag":202,"props":256,"children":257},{"style":225},[258],{"type":168,"value":228},{"type":163,"tag":202,"props":260,"children":261},{"style":231},[262],{"type":168,"value":234},{"type":163,"tag":202,"props":264,"children":265},{"class":204,"line":105},[266,271,276,281],{"type":163,"tag":202,"props":267,"children":268},{"style":240},[269],{"type":168,"value":270},"tee",{"type":163,"tag":202,"props":272,"children":273},{"style":219},[274],{"type":168,"value":275}," \u002Fetc\u002Fletsencrypt\u002Fcli.ini",{"type":163,"tag":202,"props":277,"children":278},{"style":213},[279],{"type":168,"value":280}," \u003C\u003C",{"type":163,"tag":202,"props":282,"children":283},{"style":219},[284],{"type":168,"value":285},"EOF\n",{"type":163,"tag":202,"props":287,"children":288},{"class":204,"line":12},[289],{"type":163,"tag":202,"props":290,"children":291},{"emptyLinePlaceholder":17},[292],{"type":168,"value":293},"\n",{"type":163,"tag":202,"props":295,"children":297},{"class":204,"line":296},5,[298],{"type":163,"tag":202,"props":299,"children":300},{"style":219},[301],{"type":168,"value":302},"#\n",{"type":163,"tag":202,"props":304,"children":306},{"class":204,"line":305},6,[307],{"type":163,"tag":202,"props":308,"children":309},{"style":219},[310],{"type":168,"value":311},"authenticator = webroot\n",{"type":163,"tag":202,"props":313,"children":315},{"class":204,"line":314},7,[316],{"type":163,"tag":202,"props":317,"children":318},{"style":219},[319],{"type":168,"value":320},"webroot-path = \u002Fvar\u002Fwww\u002Fhtml\n",{"type":163,"tag":202,"props":322,"children":324},{"class":204,"line":323},8,[325],{"type":163,"tag":202,"props":326,"children":327},{"emptyLinePlaceholder":17},[328],{"type":168,"value":293},{"type":163,"tag":202,"props":330,"children":332},{"class":204,"line":331},9,[333],{"type":163,"tag":202,"props":334,"children":335},{"style":219},[336],{"type":168,"value":302},{"type":163,"tag":202,"props":338,"children":340},{"class":204,"line":339},10,[341],{"type":163,"tag":202,"props":342,"children":343},{"style":219},[344],{"type":168,"value":345},"agree-tos = True\n",{"type":163,"tag":202,"props":347,"children":349},{"class":204,"line":348},11,[350,355],{"type":163,"tag":202,"props":351,"children":352},{"style":219},[353],{"type":168,"value":354},"email = ",{"type":163,"tag":202,"props":356,"children":357},{"style":208},[358],{"type":168,"value":359},"$EMAIL\n",{"type":163,"tag":202,"props":361,"children":363},{"class":204,"line":362},12,[364],{"type":163,"tag":202,"props":365,"children":366},{"emptyLinePlaceholder":17},[367],{"type":168,"value":293},{"type":163,"tag":202,"props":369,"children":371},{"class":204,"line":370},13,[372],{"type":163,"tag":202,"props":373,"children":374},{"style":219},[375],{"type":168,"value":302},{"type":163,"tag":202,"props":377,"children":379},{"class":204,"line":378},14,[380],{"type":163,"tag":202,"props":381,"children":382},{"style":219},[383],{"type":168,"value":384},"text = True\n",{"type":163,"tag":202,"props":386,"children":387},{"class":204,"line":134},[388],{"type":163,"tag":202,"props":389,"children":390},{"style":219},[391],{"type":168,"value":392},"#quiet = True\n",{"type":163,"tag":202,"props":394,"children":396},{"class":204,"line":395},16,[397],{"type":163,"tag":202,"props":398,"children":399},{"emptyLinePlaceholder":17},[400],{"type":168,"value":293},{"type":163,"tag":202,"props":402,"children":404},{"class":204,"line":403},17,[405],{"type":163,"tag":202,"props":406,"children":407},{"style":219},[408],{"type":168,"value":302},{"type":163,"tag":202,"props":410,"children":412},{"class":204,"line":411},18,[413],{"type":163,"tag":202,"props":414,"children":415},{"style":219},[416],{"type":168,"value":417},"post-hook = service nginx reload\n",{"type":163,"tag":202,"props":419,"children":421},{"class":204,"line":420},19,[422],{"type":163,"tag":202,"props":423,"children":424},{"emptyLinePlaceholder":17},[425],{"type":168,"value":293},{"type":163,"tag":202,"props":427,"children":429},{"class":204,"line":428},20,[430],{"type":163,"tag":202,"props":431,"children":432},{"style":219},[433],{"type":168,"value":302},{"type":163,"tag":202,"props":435,"children":437},{"class":204,"line":436},21,[438],{"type":163,"tag":202,"props":439,"children":440},{"style":219},[441],{"type":168,"value":442},"max-log-backups = 0\n",{"type":163,"tag":202,"props":444,"children":446},{"class":204,"line":445},22,[447],{"type":163,"tag":202,"props":448,"children":449},{"style":219},[450],{"type":168,"value":285},{"type":163,"tag":164,"props":452,"children":453},{},[454,456],{"type":168,"value":455},"После проверяем, корректно ли установилось мыло\n",{"type":163,"tag":171,"props":457,"children":459},{"className":458},[],[460],{"type":168,"value":461},"grep email \u002Fetc\u002Fletsencrypt\u002Fcli.ini",{"type":163,"tag":463,"props":464,"children":466},"h2",{"id":465},"конфиг-nginx",[467],{"type":168,"value":468},"Конфиг NGINX",{"type":163,"tag":164,"props":470,"children":471},{},[472,474,480,482,488,490,496,498,504,506],{"type":168,"value":473},"Настройка NGINX конфига не обязательна, если вы используете modxPanelDaemon последней версии – там уже всё прописано. Просто, надо будет в ",{"type":163,"tag":171,"props":475,"children":477},{"className":476},[],[478],{"type":168,"value":479},"\u002Fvar\u002Fwww\u002FUSERNAME\u002Fdomains.nginx",{"type":168,"value":481}," вначале указать ",{"type":163,"tag":171,"props":483,"children":485},{"className":484},[],[486],{"type":168,"value":487},"set $is_https '1';",{"type":168,"value":489}," и в ",{"type":163,"tag":171,"props":491,"children":493},{"className":492},[],[494],{"type":168,"value":495},"\u002Fvar\u002Fwww\u002FUSERNAME\u002Fmain.nginx",{"type":168,"value":497}," раскоментировать ",{"type":163,"tag":171,"props":499,"children":501},{"className":500},[],[502],{"type":168,"value":503},"#include \u002Fetc\u002Fnginx\u002Fssl\u002FSITEDOMAIN.conf;",{"type":168,"value":505}," указав основной домен сертификата для вашего сайта.\n",{"type":163,"tag":507,"props":508,"children":509},"strong",{},[510],{"type":168,"value":511},"Сделать это нужно после того, как для домена будут выпущены сертификаты.",{"type":163,"tag":164,"props":513,"children":514},{},[515],{"type":168,"value":516},"В ином случае, в конфиг надо добавить, что-то вроде:",{"type":163,"tag":191,"props":518,"children":522},{"className":519,"code":520,"language":521,"meta":123,"style":196},"language-nginx shiki shiki-themes github-light catppuccin-mocha","listen 80;\nlisten 443 ssl;\nlisten [::]:443 ssl;\nlocation \u002F.well-known {\n    root \u002Fvar\u002Fwww\u002Fhtml;\n}\n# other code\n","nginx",[523],{"type":163,"tag":171,"props":524,"children":525},{"__ignoreMap":123},[526,546,567,583,602,619,627],{"type":163,"tag":202,"props":527,"children":528},{"class":204,"line":40},[529,535,541],{"type":163,"tag":202,"props":530,"children":532},{"style":531},"--shiki-default:#D73A49;--shiki-dark:#CBA6F7",[533],{"type":168,"value":534},"listen ",{"type":163,"tag":202,"props":536,"children":538},{"style":537},"--shiki-default:#005CC5;--shiki-dark:#FAB387",[539],{"type":168,"value":540},"80",{"type":163,"tag":202,"props":542,"children":543},{"style":225},[544],{"type":168,"value":545},";\n",{"type":163,"tag":202,"props":547,"children":548},{"class":204,"line":32},[549,553,558,563],{"type":163,"tag":202,"props":550,"children":551},{"style":531},[552],{"type":168,"value":534},{"type":163,"tag":202,"props":554,"children":555},{"style":537},[556],{"type":168,"value":557},"443",{"type":163,"tag":202,"props":559,"children":560},{"style":208},[561],{"type":168,"value":562}," ssl",{"type":163,"tag":202,"props":564,"children":565},{"style":225},[566],{"type":168,"value":545},{"type":163,"tag":202,"props":568,"children":569},{"class":204,"line":105},[570,574,579],{"type":163,"tag":202,"props":571,"children":572},{"style":531},[573],{"type":168,"value":534},{"type":163,"tag":202,"props":575,"children":576},{"style":208},[577],{"type":168,"value":578},"[::]:443 ssl",{"type":163,"tag":202,"props":580,"children":581},{"style":225},[582],{"type":168,"value":545},{"type":163,"tag":202,"props":584,"children":585},{"class":204,"line":12},[586,591,597],{"type":163,"tag":202,"props":587,"children":588},{"style":531},[589],{"type":168,"value":590},"location",{"type":163,"tag":202,"props":592,"children":594},{"style":593},"--shiki-default:#6F42C1;--shiki-dark:#CDD6F4",[595],{"type":168,"value":596}," \u002F.well-known ",{"type":163,"tag":202,"props":598,"children":599},{"style":208},[600],{"type":168,"value":601},"{\n",{"type":163,"tag":202,"props":603,"children":604},{"class":204,"line":296},[605,610,615],{"type":163,"tag":202,"props":606,"children":607},{"style":531},[608],{"type":168,"value":609},"    root ",{"type":163,"tag":202,"props":611,"children":612},{"style":208},[613],{"type":168,"value":614},"\u002Fvar\u002Fwww\u002Fhtml",{"type":163,"tag":202,"props":616,"children":617},{"style":225},[618],{"type":168,"value":545},{"type":163,"tag":202,"props":620,"children":621},{"class":204,"line":305},[622],{"type":163,"tag":202,"props":623,"children":624},{"style":208},[625],{"type":168,"value":626},"}\n",{"type":163,"tag":202,"props":628,"children":629},{"class":204,"line":314},[630],{"type":163,"tag":202,"props":631,"children":633},{"style":632},"--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#9399B2;--shiki-dark-font-style:italic",[634],{"type":168,"value":635},"# other code\n",{"type":163,"tag":164,"props":637,"children":638},{},[639,641],{"type":168,"value":640},"И ",{"type":163,"tag":171,"props":642,"children":644},{"className":643},[],[645],{"type":168,"value":646},"service nginx reload",{"type":163,"tag":648,"props":649,"children":651},"h3",{"id":650},"директория-well-known",[652],{"type":168,"value":653},"Директория .well-known",{"type":163,"tag":164,"props":655,"children":656},{},[657,659,665],{"type":168,"value":658},"Теперь надо проверить, доступна ли директория ",{"type":163,"tag":171,"props":660,"children":662},{"className":661},[],[663],{"type":168,"value":664},"\u002F.well-known",{"type":168,"value":666}," для Let's Encrypt из веба. Для этого в ней создаём тестовый файл",{"type":163,"tag":191,"props":668,"children":670},{"className":193,"code":669,"language":195,"meta":123,"style":196},"mkdir -p \u002Fvar\u002Fwww\u002Fhtml\u002F.well-known\u002Facme-challenge \\\n&& echo OK > \u002Fvar\u002Fwww\u002Fhtml\u002F.well-known\u002Facme-challenge\u002Ftest.html\n",[671],{"type":163,"tag":171,"props":672,"children":673},{"__ignoreMap":123},[674,694],{"type":163,"tag":202,"props":675,"children":676},{"class":204,"line":40},[677,681,685,690],{"type":163,"tag":202,"props":678,"children":679},{"style":240},[680],{"type":168,"value":243},{"type":163,"tag":202,"props":682,"children":683},{"style":246},[684],{"type":168,"value":249},{"type":163,"tag":202,"props":686,"children":687},{"style":219},[688],{"type":168,"value":689}," \u002Fvar\u002Fwww\u002Fhtml\u002F.well-known\u002Facme-challenge",{"type":163,"tag":202,"props":691,"children":692},{"style":231},[693],{"type":168,"value":234},{"type":163,"tag":202,"props":695,"children":696},{"class":204,"line":32},[697,702,708,713,718],{"type":163,"tag":202,"props":698,"children":699},{"style":225},[700],{"type":168,"value":701},"&&",{"type":163,"tag":202,"props":703,"children":705},{"style":704},"--shiki-default:#005CC5;--shiki-default-font-style:inherit;--shiki-dark:#F38BA8;--shiki-dark-font-style:italic",[706],{"type":168,"value":707}," echo",{"type":163,"tag":202,"props":709,"children":710},{"style":219},[711],{"type":168,"value":712}," OK",{"type":163,"tag":202,"props":714,"children":715},{"style":213},[716],{"type":168,"value":717}," >",{"type":163,"tag":202,"props":719,"children":720},{"style":219},[721],{"type":168,"value":722}," \u002Fvar\u002Fwww\u002Fhtml\u002F.well-known\u002Facme-challenge\u002Ftest.html\n",{"type":163,"tag":164,"props":724,"children":725},{},[726,728,734,736,742,744],{"type":168,"value":727},"Открываем в браузере ",{"type":163,"tag":171,"props":729,"children":731},{"className":730},[],[732],{"type":168,"value":733},"http:\u002F\u002FYOU_DOMAIN.ru\u002F.well-known\u002Facme-challenge\u002Ftest.html",{"type":168,"value":735},", если всё ",{"type":163,"tag":171,"props":737,"children":739},{"className":738},[],[740],{"type":168,"value":741},"OK",{"type":168,"value":743},", то удаляем тестовые файлы:\n",{"type":163,"tag":171,"props":745,"children":747},{"className":746},[],[748],{"type":168,"value":749},"rm \u002Fvar\u002Fwww\u002Fhtml\u002F.well-known\u002Facme-challenge\u002Ftest.html && rmdir \u002Fvar\u002Fwww\u002Fhtml\u002F.well-known\u002Facme-challenge",{"type":163,"tag":463,"props":751,"children":753},{"id":752},"вспомогательные-скрипты",[754],{"type":168,"value":755},"Вспомогательные скрипты",{"type":163,"tag":164,"props":757,"children":758},{},[759],{"type":168,"value":760},"Выпуск сертификатов:",{"type":163,"tag":191,"props":762,"children":764},{"className":193,"code":763,"language":195,"meta":123,"style":196},"tee \u002Fusr\u002Flocal\u002Fbin\u002Fcertbot-certonly \u003C\u003C'EOF'\n#!\u002Fbin\u002Fsh\nIFS=\",\"\ncertbot certonly -d \"$*\";\nEOF\nchmod +x \u002Fusr\u002Flocal\u002Fbin\u002Fcertbot-certonly\n",[765],{"type":163,"tag":171,"props":766,"children":767},{"__ignoreMap":123},[768,789,797,805,813,820],{"type":163,"tag":202,"props":769,"children":770},{"class":204,"line":40},[771,775,780,784],{"type":163,"tag":202,"props":772,"children":773},{"style":240},[774],{"type":168,"value":270},{"type":163,"tag":202,"props":776,"children":777},{"style":219},[778],{"type":168,"value":779}," \u002Fusr\u002Flocal\u002Fbin\u002Fcertbot-certonly",{"type":163,"tag":202,"props":781,"children":782},{"style":213},[783],{"type":168,"value":280},{"type":163,"tag":202,"props":785,"children":786},{"style":219},[787],{"type":168,"value":788},"'EOF'\n",{"type":163,"tag":202,"props":790,"children":791},{"class":204,"line":32},[792],{"type":163,"tag":202,"props":793,"children":794},{"style":219},[795],{"type":168,"value":796},"#!\u002Fbin\u002Fsh\n",{"type":163,"tag":202,"props":798,"children":799},{"class":204,"line":105},[800],{"type":163,"tag":202,"props":801,"children":802},{"style":219},[803],{"type":168,"value":804},"IFS=\",\"\n",{"type":163,"tag":202,"props":806,"children":807},{"class":204,"line":12},[808],{"type":163,"tag":202,"props":809,"children":810},{"style":219},[811],{"type":168,"value":812},"certbot certonly -d \"$*\";\n",{"type":163,"tag":202,"props":814,"children":815},{"class":204,"line":296},[816],{"type":163,"tag":202,"props":817,"children":818},{"style":219},[819],{"type":168,"value":285},{"type":163,"tag":202,"props":821,"children":822},{"class":204,"line":305},[823,828,833],{"type":163,"tag":202,"props":824,"children":825},{"style":240},[826],{"type":168,"value":827},"chmod",{"type":163,"tag":202,"props":829,"children":830},{"style":219},[831],{"type":168,"value":832}," +x",{"type":163,"tag":202,"props":834,"children":835},{"style":219},[836],{"type":168,"value":837}," \u002Fusr\u002Flocal\u002Fbin\u002Fcertbot-certonly\n",{"type":163,"tag":164,"props":839,"children":840},{},[841,843],{"type":168,"value":842},"Использовать так:\n",{"type":163,"tag":171,"props":844,"children":846},{"className":845},[],[847],{"type":168,"value":848},"certbot-certonly domain.ru www.domain.ru",{"type":163,"tag":164,"props":850,"children":851},{},[852],{"type":168,"value":853},"Создание NGINX конфига сертификатов:",{"type":163,"tag":191,"props":855,"children":857},{"className":193,"code":856,"language":195,"meta":123,"style":196},"tee \u002Fusr\u002Flocal\u002Fbin\u002Fupdate-certs \u003C\u003C'DOC'\n#!\u002Fbin\u002Fbash\nmkdir -p \u002Fetc\u002Fnginx\u002Fssl\nfor CN in \u002Fetc\u002Fletsencrypt\u002Flive\u002F*\u002F\ndo\n    dest=\u002Fetc\u002Fnginx\u002Fssl\u002F$(basename $CN).conf\n    names=$(openssl x509 -text -in $CN\u002Fcert.pem |\n        grep -o 'DNS:[^,]*' | cut -f2 -d: | xargs);\n    (\n        echo \"# include ${dest#\u002Fetc\u002Fnginx\u002F};\"\n        echo \"# server_name $names;\"\n        echo \"ssl_certificate $CN\u002Ffullchain.pem;\"\n        echo \"ssl_certificate_key $CN\u002Fprivkey.pem;\"\n        echo \"ssl_trusted_certificate $CN\u002Fchain.pem;\"\n        echo\n    ) | tee $dest;\ndone\nDOC\nchmod +x \u002Fusr\u002Flocal\u002Fbin\u002Fupdate-certs\n",[858],{"type":163,"tag":171,"props":859,"children":860},{"__ignoreMap":123},[861,882,890,898,906,914,922,930,938,946,954,962,970,978,986,994,1002,1010,1018],{"type":163,"tag":202,"props":862,"children":863},{"class":204,"line":40},[864,868,873,877],{"type":163,"tag":202,"props":865,"children":866},{"style":240},[867],{"type":168,"value":270},{"type":163,"tag":202,"props":869,"children":870},{"style":219},[871],{"type":168,"value":872}," \u002Fusr\u002Flocal\u002Fbin\u002Fupdate-certs",{"type":163,"tag":202,"props":874,"children":875},{"style":213},[876],{"type":168,"value":280},{"type":163,"tag":202,"props":878,"children":879},{"style":219},[880],{"type":168,"value":881},"'DOC'\n",{"type":163,"tag":202,"props":883,"children":884},{"class":204,"line":32},[885],{"type":163,"tag":202,"props":886,"children":887},{"style":219},[888],{"type":168,"value":889},"#!\u002Fbin\u002Fbash\n",{"type":163,"tag":202,"props":891,"children":892},{"class":204,"line":105},[893],{"type":163,"tag":202,"props":894,"children":895},{"style":219},[896],{"type":168,"value":897},"mkdir -p \u002Fetc\u002Fnginx\u002Fssl\n",{"type":163,"tag":202,"props":899,"children":900},{"class":204,"line":12},[901],{"type":163,"tag":202,"props":902,"children":903},{"style":219},[904],{"type":168,"value":905},"for CN in \u002Fetc\u002Fletsencrypt\u002Flive\u002F*\u002F\n",{"type":163,"tag":202,"props":907,"children":908},{"class":204,"line":296},[909],{"type":163,"tag":202,"props":910,"children":911},{"style":219},[912],{"type":168,"value":913},"do\n",{"type":163,"tag":202,"props":915,"children":916},{"class":204,"line":305},[917],{"type":163,"tag":202,"props":918,"children":919},{"style":219},[920],{"type":168,"value":921},"    dest=\u002Fetc\u002Fnginx\u002Fssl\u002F$(basename $CN).conf\n",{"type":163,"tag":202,"props":923,"children":924},{"class":204,"line":314},[925],{"type":163,"tag":202,"props":926,"children":927},{"style":219},[928],{"type":168,"value":929},"    names=$(openssl x509 -text -in $CN\u002Fcert.pem |\n",{"type":163,"tag":202,"props":931,"children":932},{"class":204,"line":323},[933],{"type":163,"tag":202,"props":934,"children":935},{"style":219},[936],{"type":168,"value":937},"        grep -o 'DNS:[^,]*' | cut -f2 -d: | xargs);\n",{"type":163,"tag":202,"props":939,"children":940},{"class":204,"line":331},[941],{"type":163,"tag":202,"props":942,"children":943},{"style":219},[944],{"type":168,"value":945},"    (\n",{"type":163,"tag":202,"props":947,"children":948},{"class":204,"line":339},[949],{"type":163,"tag":202,"props":950,"children":951},{"style":219},[952],{"type":168,"value":953},"        echo \"# include ${dest#\u002Fetc\u002Fnginx\u002F};\"\n",{"type":163,"tag":202,"props":955,"children":956},{"class":204,"line":348},[957],{"type":163,"tag":202,"props":958,"children":959},{"style":219},[960],{"type":168,"value":961},"        echo \"# server_name $names;\"\n",{"type":163,"tag":202,"props":963,"children":964},{"class":204,"line":362},[965],{"type":163,"tag":202,"props":966,"children":967},{"style":219},[968],{"type":168,"value":969},"        echo \"ssl_certificate $CN\u002Ffullchain.pem;\"\n",{"type":163,"tag":202,"props":971,"children":972},{"class":204,"line":370},[973],{"type":163,"tag":202,"props":974,"children":975},{"style":219},[976],{"type":168,"value":977},"        echo \"ssl_certificate_key $CN\u002Fprivkey.pem;\"\n",{"type":163,"tag":202,"props":979,"children":980},{"class":204,"line":378},[981],{"type":163,"tag":202,"props":982,"children":983},{"style":219},[984],{"type":168,"value":985},"        echo \"ssl_trusted_certificate $CN\u002Fchain.pem;\"\n",{"type":163,"tag":202,"props":987,"children":988},{"class":204,"line":134},[989],{"type":163,"tag":202,"props":990,"children":991},{"style":219},[992],{"type":168,"value":993},"        echo\n",{"type":163,"tag":202,"props":995,"children":996},{"class":204,"line":395},[997],{"type":163,"tag":202,"props":998,"children":999},{"style":219},[1000],{"type":168,"value":1001},"    ) | tee $dest;\n",{"type":163,"tag":202,"props":1003,"children":1004},{"class":204,"line":403},[1005],{"type":163,"tag":202,"props":1006,"children":1007},{"style":219},[1008],{"type":168,"value":1009},"done\n",{"type":163,"tag":202,"props":1011,"children":1012},{"class":204,"line":411},[1013],{"type":163,"tag":202,"props":1014,"children":1015},{"style":219},[1016],{"type":168,"value":1017},"DOC\n",{"type":163,"tag":202,"props":1019,"children":1020},{"class":204,"line":420},[1021,1025,1029],{"type":163,"tag":202,"props":1022,"children":1023},{"style":240},[1024],{"type":168,"value":827},{"type":163,"tag":202,"props":1026,"children":1027},{"style":219},[1028],{"type":168,"value":832},{"type":163,"tag":202,"props":1030,"children":1031},{"style":219},[1032],{"type":168,"value":1033}," \u002Fusr\u002Flocal\u002Fbin\u002Fupdate-certs\n",{"type":163,"tag":164,"props":1035,"children":1036},{},[1037,1038],{"type":168,"value":842},{"type":163,"tag":171,"props":1039,"children":1041},{"className":1040},[],[1042],{"type":168,"value":1043},"update-certs",{"type":163,"tag":463,"props":1045,"children":1047},{"id":1046},"выпускаем-сертификаты",[1048],{"type":168,"value":1049},"Выпускаем сертификаты",{"type":163,"tag":164,"props":1051,"children":1052},{},[1053],{"type":163,"tag":171,"props":1054,"children":1056},{"className":1055},[],[1057],{"type":168,"value":1058},"certbot-certonly domain.com www.domain.com",{"type":163,"tag":164,"props":1060,"children":1061},{},[1062,1064],{"type":168,"value":1063},"Обновляем список конфигов для сертификатов:\n",{"type":163,"tag":171,"props":1065,"children":1067},{"className":1066},[],[1068],{"type":168,"value":1043},{"type":163,"tag":164,"props":1070,"children":1071},{},[1072,1074],{"type":168,"value":1073},"И проверяем сертификаты в папке:\n",{"type":163,"tag":171,"props":1075,"children":1077},{"className":1076},[],[1078],{"type":168,"value":1079},"grep -h '^#' \u002Fetc\u002Fnginx\u002Fssl\u002F*",{"type":163,"tag":164,"props":1081,"children":1082},{},[1083,1085,1090,1092,1098,1100],{"type":168,"value":1084},"Далее, в ",{"type":163,"tag":171,"props":1086,"children":1088},{"className":1087},[],[1089],{"type":168,"value":479},{"type":168,"value":1091}," заменить:\n",{"type":163,"tag":171,"props":1093,"children":1095},{"className":1094},[],[1096],{"type":168,"value":1097},"set $is_https '0';",{"type":168,"value":1099},"\nна:\n",{"type":163,"tag":171,"props":1101,"children":1103},{"className":1102},[],[1104],{"type":168,"value":487},{"type":163,"tag":164,"props":1106,"children":1107},{},[1108,1110,1115,1116,1121],{"type":168,"value":1109},"А в ",{"type":163,"tag":171,"props":1111,"children":1113},{"className":1112},[],[1114],{"type":168,"value":495},{"type":168,"value":497},{"type":163,"tag":171,"props":1117,"children":1119},{"className":1118},[],[1120],{"type":168,"value":503},{"type":168,"value":1122},", указав основной домен сертификата для вашего сайта.",{"type":163,"tag":164,"props":1124,"children":1125},{},[1126,1127],{"type":168,"value":640},{"type":163,"tag":171,"props":1128,"children":1130},{"className":1129},[],[1131],{"type":168,"value":646},{"type":163,"tag":463,"props":1133,"children":1135},{"id":1134},"перевыпуск-сертификатов",[1136],{"type":168,"value":1137},"Перевыпуск сертификатов",{"type":163,"tag":164,"props":1139,"children":1140},{},[1141,1143],{"type":168,"value":1142},"Добавим в крон перевыпуск сертификатов:\n",{"type":163,"tag":171,"props":1144,"children":1146},{"className":1145},[],[1147],{"type":168,"value":1148},"57 *\u002F12 * * * certbot renew --allow-subset-of-names",{"type":163,"tag":463,"props":1150,"children":1152},{"id":1151},"добавить-поддомен-в-сертификат",[1153],{"type":168,"value":1154},"Добавить поддомен в сертификат",{"type":163,"tag":164,"props":1156,"children":1157},{},[1158],{"type":168,"value":1159},"Можно добавить до 100 доменов и поддоменов в уже выпущенный сертификат.",{"type":163,"tag":191,"props":1161,"children":1163},{"className":193,"code":1162,"language":195,"meta":123,"style":196},"certbot certonly --expand \\\n-d example.com \\\n-d www.example.com \\\n-d other.example.com\n",[1164],{"type":163,"tag":171,"props":1165,"children":1166},{"__ignoreMap":123},[1167,1189,1206,1222],{"type":163,"tag":202,"props":1168,"children":1169},{"class":204,"line":40},[1170,1175,1180,1185],{"type":163,"tag":202,"props":1171,"children":1172},{"style":240},[1173],{"type":168,"value":1174},"certbot",{"type":163,"tag":202,"props":1176,"children":1177},{"style":219},[1178],{"type":168,"value":1179}," certonly",{"type":163,"tag":202,"props":1181,"children":1182},{"style":246},[1183],{"type":168,"value":1184}," --expand",{"type":163,"tag":202,"props":1186,"children":1187},{"style":231},[1188],{"type":168,"value":234},{"type":163,"tag":202,"props":1190,"children":1191},{"class":204,"line":32},[1192,1197,1202],{"type":163,"tag":202,"props":1193,"children":1194},{"style":208},[1195],{"type":168,"value":1196},"-d ",{"type":163,"tag":202,"props":1198,"children":1199},{"style":219},[1200],{"type":168,"value":1201},"example.com",{"type":163,"tag":202,"props":1203,"children":1204},{"style":231},[1205],{"type":168,"value":234},{"type":163,"tag":202,"props":1207,"children":1208},{"class":204,"line":105},[1209,1213,1218],{"type":163,"tag":202,"props":1210,"children":1211},{"style":208},[1212],{"type":168,"value":1196},{"type":163,"tag":202,"props":1214,"children":1215},{"style":219},[1216],{"type":168,"value":1217},"www.example.com",{"type":163,"tag":202,"props":1219,"children":1220},{"style":231},[1221],{"type":168,"value":234},{"type":163,"tag":202,"props":1223,"children":1224},{"class":204,"line":12},[1225,1229],{"type":163,"tag":202,"props":1226,"children":1227},{"style":208},[1228],{"type":168,"value":1196},{"type":163,"tag":202,"props":1230,"children":1231},{"style":219},[1232],{"type":168,"value":1233},"other.example.com\n",{"type":163,"tag":164,"props":1235,"children":1236},{},[1237,1239,1245],{"type":168,"value":1238},"Вместо ",{"type":163,"tag":171,"props":1240,"children":1242},{"className":1241},[],[1243],{"type":168,"value":1244},"-d example.com",{"type":168,"value":1246}," надо указать основной домен существующего сертификата, а далее уже домены, которыми сертификат нужно расширить.",{"type":163,"tag":463,"props":1248,"children":1250},{"id":1249},"возможные-проблемы",[1251],{"type":168,"value":1252},"Возможные проблемы",{"type":163,"tag":164,"props":1254,"children":1255},{},[1256,1258,1263],{"type":168,"value":1257},"Сайт может не открываться и выдавать \"Ошибку соединения\".\nТут может потребоваться в ",{"type":163,"tag":171,"props":1259,"children":1261},{"className":1260},[],[1262],{"type":168,"value":495},{"type":168,"value":1264}," заменить:",{"type":163,"tag":191,"props":1266,"children":1268},{"className":519,"code":1267,"language":521,"meta":123,"style":196},"listen 443 ssl;\nlisten [::]:443 ssl;\n",[1269],{"type":163,"tag":171,"props":1270,"children":1271},{"__ignoreMap":123},[1272,1291],{"type":163,"tag":202,"props":1273,"children":1274},{"class":204,"line":40},[1275,1279,1283,1287],{"type":163,"tag":202,"props":1276,"children":1277},{"style":531},[1278],{"type":168,"value":534},{"type":163,"tag":202,"props":1280,"children":1281},{"style":537},[1282],{"type":168,"value":557},{"type":163,"tag":202,"props":1284,"children":1285},{"style":208},[1286],{"type":168,"value":562},{"type":163,"tag":202,"props":1288,"children":1289},{"style":225},[1290],{"type":168,"value":545},{"type":163,"tag":202,"props":1292,"children":1293},{"class":204,"line":32},[1294,1298,1302],{"type":163,"tag":202,"props":1295,"children":1296},{"style":531},[1297],{"type":168,"value":534},{"type":163,"tag":202,"props":1299,"children":1300},{"style":208},[1301],{"type":168,"value":578},{"type":163,"tag":202,"props":1303,"children":1304},{"style":225},[1305],{"type":168,"value":545},{"type":163,"tag":164,"props":1307,"children":1308},{},[1309],{"type":168,"value":1310},"на:",{"type":163,"tag":191,"props":1312,"children":1314},{"className":519,"code":1313,"language":521,"meta":123,"style":196},"listen 443 ssl default_server;\nlisten [::]:443 ssl default_server;\n",[1315],{"type":163,"tag":171,"props":1316,"children":1317},{"__ignoreMap":123},[1318,1344],{"type":163,"tag":202,"props":1319,"children":1320},{"class":204,"line":40},[1321,1325,1329,1334,1340],{"type":163,"tag":202,"props":1322,"children":1323},{"style":531},[1324],{"type":168,"value":534},{"type":163,"tag":202,"props":1326,"children":1327},{"style":537},[1328],{"type":168,"value":557},{"type":163,"tag":202,"props":1330,"children":1331},{"style":208},[1332],{"type":168,"value":1333}," ssl ",{"type":163,"tag":202,"props":1335,"children":1337},{"style":1336},"--shiki-default:#005CC5;--shiki-dark:#F38BA8",[1338],{"type":168,"value":1339},"default_server",{"type":163,"tag":202,"props":1341,"children":1342},{"style":225},[1343],{"type":168,"value":545},{"type":163,"tag":202,"props":1345,"children":1346},{"class":204,"line":32},[1347,1351,1356,1360],{"type":163,"tag":202,"props":1348,"children":1349},{"style":531},[1350],{"type":168,"value":534},{"type":163,"tag":202,"props":1352,"children":1353},{"style":208},[1354],{"type":168,"value":1355},"[::]:443 ssl ",{"type":163,"tag":202,"props":1357,"children":1358},{"style":1336},[1359],{"type":168,"value":1339},{"type":163,"tag":202,"props":1361,"children":1362},{"style":225},[1363],{"type":168,"value":545},{"type":163,"tag":463,"props":1365,"children":1367},{"id":1366},"удаление-ненужных-сертификатов",[1368],{"type":168,"value":1369},"Удаление ненужных сертификатов",{"type":163,"tag":164,"props":1371,"children":1372},{},[1373,1375,1381],{"type":168,"value":1374},"Если на сервере нужно удалить некоторые сертификаты, то можно воспользоваться командой:\n",{"type":163,"tag":171,"props":1376,"children":1378},{"className":1377},[],[1379],{"type":168,"value":1380},"certbot delete",{"type":168,"value":1382},"\nи выбрать, какие сертификаты надо исключить из перевыпуска.",{"type":163,"tag":164,"props":1384,"children":1385},{},[1386,1388],{"type":168,"value":1387},"Либо прямой командой:\n",{"type":163,"tag":171,"props":1389,"children":1391},{"className":1390},[],[1392],{"type":168,"value":1393},"certbot delete --cert-name example.com",{"type":163,"tag":463,"props":1395,"children":1397},{"id":1396},"необязательные-процедуры",[1398],{"type":168,"value":1399},"Необязательные процедуры",{"type":163,"tag":164,"props":1401,"children":1402},{},[1403,1405,1413,1415,1421],{"type":168,"value":1404},"Для высокого результата по тесту (",{"type":163,"tag":1406,"props":1407,"children":1411},"a",{"href":1408,"rel":1409},"https:\u002F\u002Fwww.ssllabs.com\u002Fssltest\u002Fanalyze.html?d=https:\u002F\u002Fwww.gvozdb.ru",[1410],"nofollow",[1412],{"type":168,"value":1408},{"type":168,"value":1414},") следует отказаться от DHE шифров в пользу ECDHE. Также с начала 2020 года устарел TLS 1.0\u002F1.1, поэтому придётся обновить NGINX выше версии 1.12, чтобы можно было пользоваться TLS 1.3. Делается по ",{"type":163,"tag":1406,"props":1416,"children":1418},{"href":1417},"\u002Flinux\u002Fnginx",[1419],{"type":168,"value":1420},"данной статье",{"type":168,"value":1422},".",{"type":163,"tag":1424,"props":1425,"children":1426},"style",{},[1427],{"type":168,"value":1428},".shiki,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);}.dark .shiki,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":123,"searchDepth":32,"depth":32,"links":1430},[1431,1434,1435,1436,1437,1438,1439,1440],{"id":465,"depth":32,"text":468,"children":1432},[1433],{"id":650,"depth":105,"text":653},{"id":752,"depth":32,"text":755},{"id":1046,"depth":32,"text":1049},{"id":1134,"depth":32,"text":1137},{"id":1151,"depth":32,"text":1154},{"id":1249,"depth":32,"text":1252},{"id":1366,"depth":32,"text":1369},{"id":1396,"depth":32,"text":1399},[],[1443,1451,1463,1472,1481,1493,1501,1509,1517,1525,1533,1541,1549,1557,1566],{"id":134,"documentId":135,"name":136,"slug":137,"textcolor":16,"bgcolor":16,"published":17,"uri":16,"createdAt":138,"updatedAt":138,"publishedAt":139,"locale":22,"heading":16,"desc":16,"posts":1444},[1445,1446,1447,1448,1449,1450],{"id":61,"documentId":62},{"id":64,"documentId":6},{"id":66,"documentId":67},{"id":69,"documentId":70},{"id":84,"documentId":85},{"id":96,"documentId":97},{"id":305,"documentId":1452,"name":1453,"slug":1454,"textcolor":16,"bgcolor":16,"published":17,"uri":16,"createdAt":1455,"updatedAt":1455,"publishedAt":1456,"locale":22,"heading":16,"desc":16,"posts":1457},"mau3qzs4gq9pxckgymu674yr","MODX","modx","2026-05-16T10:03:44.164Z","2026-05-16T10:03:44.154Z",[1458,1459,1460,1461,1462],{"id":49,"documentId":50},{"id":52,"documentId":53},{"id":75,"documentId":76},{"id":90,"documentId":91},{"id":93,"documentId":94},{"id":420,"documentId":1464,"name":1465,"slug":1466,"textcolor":16,"bgcolor":16,"published":17,"uri":16,"createdAt":1467,"updatedAt":1467,"publishedAt":1468,"locale":22,"heading":16,"desc":16,"posts":1469},"bfi7bs1ny52g8tz3ok8wrngy","macOS","macos","2026-05-16T10:33:46.268Z","2026-05-16T10:33:46.265Z",[1470,1471],{"id":43,"documentId":44},{"id":58,"documentId":59},{"id":428,"documentId":1473,"name":1474,"slug":1475,"textcolor":16,"bgcolor":16,"published":17,"uri":16,"createdAt":1476,"updatedAt":1476,"publishedAt":1477,"locale":22,"heading":16,"desc":16,"posts":1478},"georvivt518jgm5vp8rcv0kv","Инструменты","instrumenty","2026-05-16T10:33:46.941Z","2026-05-16T10:33:46.938Z",[1479,1480],{"id":55,"documentId":56},{"id":78,"documentId":79},{"id":1482,"documentId":1483,"name":1484,"slug":1485,"textcolor":16,"bgcolor":16,"published":17,"uri":1486,"createdAt":1487,"updatedAt":1487,"publishedAt":1488,"locale":22,"heading":1489,"desc":123,"posts":1490},31,"dcyh9y95rmthzo6oip4ftoez","AI","ai","\u002Fai","2026-05-30T10:54:12.198Z","2026-05-30T10:54:12.192Z","Искусственный интеллект",[1491,1492],{"id":99,"documentId":100},{"id":102,"documentId":103},{"id":105,"documentId":1494,"name":1495,"slug":1496,"textcolor":16,"bgcolor":16,"published":17,"uri":16,"createdAt":1497,"updatedAt":1497,"publishedAt":1498,"locale":22,"heading":16,"desc":16,"posts":1499},"tfr5asfr2apchhtgxje8epz1","Стихи","stihi","2026-05-16T10:03:43.872Z","2026-05-16T10:03:43.861Z",[1500],{"id":26,"documentId":27},{"id":296,"documentId":1502,"name":1503,"slug":1504,"textcolor":16,"bgcolor":16,"published":17,"uri":16,"createdAt":1505,"updatedAt":1505,"publishedAt":1506,"locale":22,"heading":16,"desc":16,"posts":1507},"c7joczpqlb928nxr2l5qyg9m","Мысли","mysli","2026-05-16T10:03:44.061Z","2026-05-16T10:03:44.054Z",[1508],{"id":115,"documentId":116},{"id":323,"documentId":1510,"name":1511,"slug":1512,"textcolor":16,"bgcolor":16,"published":17,"uri":16,"createdAt":1513,"updatedAt":1513,"publishedAt":1514,"locale":22,"heading":16,"desc":16,"posts":1515},"dwpf4sx017aq366ygh46evsc","Психология","psihologiya","2026-05-16T10:03:44.268Z","2026-05-16T10:03:44.264Z",[1516],{"id":118,"documentId":119},{"id":370,"documentId":1518,"name":1519,"slug":1520,"textcolor":16,"bgcolor":16,"published":17,"uri":16,"createdAt":1521,"updatedAt":1521,"publishedAt":1522,"locale":22,"heading":16,"desc":16,"posts":1523},"qolbs7a9lkvr15oytyy3gj03","CSS","css","2026-05-16T10:03:45.289Z","2026-05-16T10:03:45.283Z",[1524],{"id":81,"documentId":82},{"id":378,"documentId":1526,"name":1527,"slug":1528,"textcolor":16,"bgcolor":16,"published":17,"uri":16,"createdAt":1529,"updatedAt":1529,"publishedAt":1530,"locale":22,"heading":16,"desc":16,"posts":1531},"lz1k1ridxwxre34lzf0jfl3t","SASS","sass","2026-05-16T10:03:45.319Z","2026-05-16T10:03:45.314Z",[1532],{"id":81,"documentId":82},{"id":395,"documentId":1534,"name":1535,"slug":1536,"textcolor":16,"bgcolor":16,"published":17,"uri":16,"createdAt":1537,"updatedAt":1537,"publishedAt":1538,"locale":22,"heading":16,"desc":16,"posts":1539},"czaf643kmvvab1xf4gx3ddh9","VPN","vpn","2026-05-16T10:03:45.455Z","2026-05-16T10:03:45.446Z",[1540],{"id":84,"documentId":85},{"id":411,"documentId":1542,"name":1543,"slug":1544,"textcolor":16,"bgcolor":16,"published":17,"uri":16,"createdAt":1545,"updatedAt":1545,"publishedAt":1546,"locale":22,"heading":16,"desc":16,"posts":1547},"gpitv9ds3usb3p8j7sgajglb","SEO","seo","2026-05-16T10:33:46.002Z","2026-05-16T10:33:45.995Z",[1548],{"id":46,"documentId":47},{"id":436,"documentId":1550,"name":1551,"slug":1552,"textcolor":16,"bgcolor":16,"published":17,"uri":16,"createdAt":1553,"updatedAt":1553,"publishedAt":1554,"locale":22,"heading":16,"desc":16,"posts":1555},"htsr27rbn93onqsys2gavt4m","Phpstorm","phpstorm","2026-05-16T10:33:46.959Z","2026-05-16T10:33:46.956Z",[1556],{"id":55,"documentId":56},{"id":1558,"documentId":1559,"name":1560,"slug":1561,"textcolor":16,"bgcolor":16,"published":17,"uri":16,"createdAt":1562,"updatedAt":1562,"publishedAt":1563,"locale":22,"heading":16,"desc":16,"posts":1564},29,"l9ruh02w7yl3rvez05s8ndv7","Node.js","node-js","2026-05-16T10:33:47.947Z","2026-05-16T10:33:47.944Z",[1565],{"id":72,"documentId":73},{"id":1567,"documentId":1568,"name":1569,"slug":1570,"textcolor":16,"bgcolor":16,"published":17,"uri":16,"createdAt":1571,"updatedAt":1571,"publishedAt":1572,"locale":22,"heading":16,"desc":16,"posts":1573},30,"xkffo03bgoiimugiwqgryrx0","Крипта","kripta","2026-05-16T10:33:48.241Z","2026-05-16T10:33:48.237Z",[1574],{"id":87,"documentId":88}]