Certbot паведамляе пра паспяховае абнаўленне, файлы на дыску атрымалі новыя даты, а кліенты ўсё яшчэ сустракаюць старую ідэнтычнасць. SoftEther трымае свой SSL-сертыфікат сервера ва ўласнай канфігурацыі ўзроўню сервера, таму новы файл на дыску нічога не змяняе, пакуль не імпартаваныя канцавы сертыфікат і яго ключ. Паслядоўнасць ніжэй ахоплівае адно ручное імпартаванне, абгортку, якая запускаецца пасля кожнага абнаўлення, і праверку, якая чытае тое, што слухач фактычна прадстаўляе. Кожны крок пакідае сведчанні, якія можна параўнаць пасля наступнага абнаўлення.

Абноўлены файл не змяняе ідэнтычнасць сервера

Выдача і разгортванне — гэта асобныя падзеі з асобнымі рэжымамі адмоваў. Кліент ACME запісвае файлы ў каталог лініі і фіксуе поспех; SoftEther працягвае выкарыстоўваць той сертыфікат, які быў апошнім загрузены ў яго канфігурацыю. Таму нулявы статус выхаду апісвае файлы, а не службу, і гэтыя дзве рэчы могуць разыходзіцца, пакуль ніхто не глядзіць. Разглядайце імпарт як крок разгортвання, а абнаўленне — як яго ўваход.

Гэтае размежаванне тлумачыць і заблытаную палову-няўдачу: стары сертыфікат працягвае працаваць да заканчэння тэрміну, таму спачатку нішто не выглядае зламаным. Калі ж тэрмін сканчаецца, усе кліенты адмаўляюць адначасова, і гэта выглядае як збой, а не як прапушчаны крок разгортвання. Праверка прадстаўленай ідэнтычнасці пасля кожнага абнаўлення ператварае гэтую нечаканасць у звычайнае назіранне.

Выберыце выклік, які падыходзіць слухачу

Сертыфікат павінен называць хост, які правяраюць кліенты, таму выкарыстоўвайце публічнае імя DNS, а не ўнутраную метку або адрас. HTTP-01 патрабуе, каб выклік на працягу моманту быў адказаны на порце 80; гэта часовы слухач і ніколі не прычына пераносіць уласны порт SoftEther. DNS-01 даказвае кантроль праз запіс і зусім не патрабуе ўваходнага HTTP.

Аўтаматычнае абнаўленне азначае аўтаматычную інтэграцыю DNS з уліковымі данымі, абмежаванымі адной зонай, а не запіс TXT, які ўручную ўводзяць кожныя два месяцы. Wildcard змяняе тып выкліку, а не патрэбу ў такой аўтаматызацыі. Вырашыце гэта да стварэння першага сертыфіката, бо змена тыпу выкліку пазней азначае адначасовае ўмяшанне ў канфігурацыю кліента і ў фаервол.

Трымайце артэфакты ў парадку, пакуль вы тут. Канцавы сертыфікат і прамежкавыя прыходзяць як асобныя файлы і як адзін аб'яднаны файл ланцуга, прыватны ключ зноў асобны, а імпарту патрэбны ланцуг з адпаведным ключом, а не публічны сертыфікат сам па сабе.

Імпартуйце ланцуг на ўзроўні сервера

Зрабіце рэзервовую копію канфігурацыі сервера і пераканайцеся, што вы ўсё яшчэ можаце дасягнуць інтэрфейсу кіравання, перш чым кранаць сертыфікат. Падключайцеся як адміністратар сервера, а не як адміністратар Virtual Hub, бо сертыфікат належыць аб'екту сервера. Затым загрузіце ланцуг і ключ па абсалютным шляху, з файлаў, якія можа чытаць уліковы запіс, што запускае каманду. Заўважце, што шляхі абсалютныя, бо каманда вырашае іх ад працоўнага каталога таго працэсу, які запускаў vpncmd:

ServerCertSet /LOADCERT:/etc/letsencrypt/live/vpn.example.com/fullchain.pem /LOADKEY:/etc/letsencrypt/live/vpn.example.com/privkey.pem

Чытайце вывад каманды, а не мяркуйце поспех, і затым перачытайце ланцуг, а не давярайце файлу, які вы перадалі. Мяжа паміж зборкамі, якія імпартуюць цэлы PEM-пакет, і зборкамі, якія бяруць толькі першы сертыфікат, не дакументавана ў адным месцы, таму менавіта праверка вырашае справу для зборкі перад вамі. Падлічыце сертыфікаты, якія прадстаўляе слухач; канцавы сертыфікат без прамежкавых — гэта подпіс імпарцёра, які спажыў толькі першы блок.

Трымайце імпартаваны ключ чытэльным толькі для ўліковага запісу, які запускае сервер, і трымайце пароль кіравання па-за гісторыяй абалонкі. Для гэтага першага імпарту ўвядзіце пароль у запыце, а не перадавайце яго аргументам каманды. Гэтыя дзве звычкі нічога не каштуюць і выдаляюць самы распаўсюджаны спосаб, якім разгортванне сертыфіката выдае тое, што павінна было абараніць. Зрабіце гэта да першага імпарту, а не пасля яго.

Падключыце разгортванне, а не абнаўленне

Калі ручны імпарт працуе, змясціце менавіта гэтыя крокі ў невялікую абгортку і выклічце яе з кліента ACME пасля паспяховага абнаўлення. Certbot усталёўвае RENEWED_LINEAGE і RENEWED_DOMAINS для хука, таму абгортка можа дзейнічаць на адзін сертыфікат на машыне, якая кіруе некалькімі. Фільтруйце па лініі, а не рэагуйце на кожнае абнаўленне на хосце. Абгортка — гэта код разгортвання, які працуе з прывілеямі сервера, таму аглядайце яго як любы іншы скрыпт у гэтай ролі.

certbot renew --deploy-hook /usr/local/sbin/softether-deploy.sh

Хук, які працуе без нагляду, патрабуе ўласнага абароненага сховішча ўліковых даных і сігналу аб збоі, які даходзіць да чалавека. Калі выдача паспяховая, а імпарт правальваецца, паўтарыце імпарт, а не запытвайце іншы сертыфікат, бо другі запыт хавае дэфект разгортвання за новым файлам. Дакументацыя Certbot па абнаўленні ясна кажа, што запуск, які нічога не абнаўляе, — гэта нармальны вынік, таму менавіта хук адрознівае адно ад другога.

Параўнайце прадстаўлены ланцуг з файлам

Чытайце слухач, а не дыск. Падключыцеся да порта, які бачаць кліенты, з імем сервера, якое выкарыстоўваюць кліенты, затым параўнайце адбітак і дастаўлены ланцуг з лініяй, якую ўсталяваў хук. Дзве каманды ахопліваюць гэта, і першая таксама паказвае, ці прыходзяць прамежкавыя сертыфікаты наогул:

openssl s_client -connect vpn.example.com:443 -servername vpn.example.com -showcerts </dev/null 2>/dev/null | grep -c 'BEGIN CERTIFICATE'
openssl s_client -connect vpn.example.com:443 -servername vpn.example.com </dev/null 2>/dev/null | openssl x509 -noout -subject -dates -fingerprint -sha256

Затым стварыце новае кліенцкае злучэнне, бо сеансы, усталяваныя да імпарту, былі аўтэнтыфікаваныя супраць папярэдняй ідэнтычнасці і нічога не даказваюць пра новую. Калі кліенты замацоўваюць стары канцавы сертыфікат, ім патрэбна ўзгодненае абнаўленне нават тады, калі публічны ланцуг сапраўдны, і гэтая задача належыць у той жа runbook, што і абнаўленне. Зваротны проксі перад службай можа прадстаўляць добры сертыфікат, пакуль слухач VPN усё яшчэ трымае стары, і менавіта таму праверка павінна называць порт, да якога кліенты фактычна датыкаюцца. Запішыце адбітак побач з датай абнаўлення, каб наступнае параўнанне было праверкай, а не актам памяці.

Падобныя артыкулы